我的Android应用程序在数据库中包含两个表,其中一个表存储动态数据,另一个表应该通过解析文本文件将近7000个字典单词存储到该表中。此操作应该在应用程序第一次安装时执行一次。文本文件存储在原始文件夹中。
我面临的问题是,当我尝试解析并存储到该表时,logcat在数据库中说没有这样的表。
以下是方法和DBHelper代码段:
DBHelper class snippet:
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 :(得分:0)
问题可能是因为DbHelper未正确实例化。检查在dbhelper实例化期间是否传递了正确的数据库名称,版本和上下文。 - 你也可以告诉我代码logcat中哪个地方抱怨没有数据库存在 - 连接整个代码而不是碎片