2013-01-20 146 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沒有正確實例化,上下文沒有正確傳遞。我解決了問題並感謝您的指點。 –

相關問題