2014-02-27 68 views
1

我正在編寫一個應用程序,它需要動態創建表。 我已經寫了下面的代碼:動態創建表(在按鈕上單擊)在Android中

public void CreateDynamicTables(String Table_Name, String Contact_ID, String Display_Name){ 
     dbs.execSQL("DROP TABLE IF EXISTS " + Table_Name); 
     String query = "CREATE TABLE " + Table_Name + "(" + CID + " TEXT PRIMARY KEY, " + DName + " TEXT);"; 
     dbs.execSQL(query); 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues cv = new ContentValues(); 
     cv.put(CID, Contact_ID); 
     cv.put(DName, Display_Name); 
     db.insert(Table_Name, null, cv); 
     db.close(); 
    } 

但它的應用程序崩潰。無法找到它有什麼問題。

的logcat:

Logcat

+0

可以提供LogCat錯誤 – MDMalik

+0

添加logcat到主線程^^ – Priyabrata

+0

什麼是第62行? – Melquiades

回答

2

在你在一些地方dbs

使用db一些地方試試這個代碼

public void CreateDynamicTables(String Table_Name, String Contact_ID, String Display_Name)  
{ 

     dbs = this.getWritableDatabase(); 
     dbs.execSQL("DROP TABLE IF EXISTS " + Table_Name); 
     String query = "CREATE TABLE " + Table_Name + "(" + CID + " TEXT PRIMARY KEY, " + DName + " TEXT);"; 
     dbs.execSQL(query); 
     dbs = this.getWritableDatabase(); 
     ContentValues cv = new ContentValues(); 
     cv.put(CID, Contact_ID); 
     cv.put(DName, Display_Name); 
     dbs.insert(Table_Name, null, cv); 
     dbs.close(); 
    } 
+0

我用dbs(全局變量)來創建表和db(本地)來在表中插入數據。但是,將db更改爲dbs並沒有幫助,並導致相同的錯誤。 – Priyabrata

+0

@Priyabrata嘗試Log.i,並找到它到底執行哪一步。將更容易幫助你 – MDMalik

+0

它執行第一行和崩潰。即DROP TABLE IF EXISTS line – Priyabrata

2

如果NullPointerException異常發生 - 就像你說的 - 在線:

dbs.execSQL("DROP TABLE IF EXISTS " + Table_Name); 

那麼最有可能你的dbs未初始化。在使用之前初始化它:

dbs = getWritableDatabase(); 

另外,檢查Table_Name是否也不爲空。

+0

現貨!!那工作! – Priyabrata