2013-01-20 147 views
1

我的android应用程序包含两个表中的数据库,其中一个表存储动态数据,另一个表应该通过解析文本文件将近7000个字典单词存储到该表中。此操作应该是当应用程序第一次安装时完成一次。文本文件存储在原始文件夹中。插入文本文件数据到SQLite数据库使用android

我在这里面临的问题是,当我尝试解析并存储到该表logcat中说在数据库中没有这样的表。

这里是方法和DBHelper代码片段:

DBHelper类片段:

private static final String DICTIONARY_TABLE_CREATE = 
"CREATE TABLE " + DATABASE_TABLE_NAME_DICTIONARY + "(" + 
"_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ 
"words TEXT NOT NULL);"; 

private static final String USER_TABLE_CREATE = 
"CREATE TABLE " + DATABASE_TABLE_NAME_USERINFO + "(" + 
"_id INTEGER PRIMARY KEY AUTOINCREMENT,"+ 
"player_name TEXT NOT NULL, " + 
"player_username TEXT NOT NULL, " + 
"player_pass TEXT NOT NULL, " + 
"player_played VARCHAR NOT NULL, " + 
"player_won VARCHAR NOT NULL, " + 
"player_loss VARCHAR NOT NULL);"; 

public void onCreate(SQLiteDatabase db) 
{  
try 
{ 
db.execSQL(USER_TABLE_CREATE); 
db.execSQL(DICTIONARY_TABLE_CREATE); 
System.out.println("In onCreate"); 
} 
catch(Exception e) 
{ 
e.printStackTrace(); 
} 
} 

这里是方法来解析文本文件和值插入数据库:

public void CopytxtfileTodb() 
{ 
InputStream inputStream = getResources().openRawResource(R.raw.wordslists); 
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); 
SQLiteDatabase db = playerDB.getWritableDatabase(); 

try 
{      
String line = ""; 

while((line= br.readLine()) != "") 
{             
ContentValues values = new ContentValues(); 

values.put("words", line); 

try 
{ 
db.insert(DBHelper.DATABASE_TABLE_NAME_DICTIONARY, null, values);          
}                 
catch(Exception e) 
{ 
e.printStackTrace(); 

}     
}    

} 
catch(Exception e) 
{ 
System.err.println("Parse Error: " + e.getMessage());     
}    

回答

0

问题可能是因为DbHelper没有正确实例化。请检查dbhelper实例化过程中是否传递了正确的数据库名称,版本和上下文。 - 你也可以告诉我在代码logcat中的哪个地方抱怨没有数据库存在 - 附上你的整个代码而不是件

+0

问题是DBHelper没有正确实例化,上下文没有正确传递。我解决了问题并感谢您的指点。 –

相关问题