动态创建表(On Button Click)在Android中

时间:2014-02-27 12:27:04

标签: android sqlite dynamic

我正在编写一个应用程序,它需要动态创建表。 我写了以下代码:

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

2 个答案:

答案 0 :(得分:2)

在某些地方,您在某些地方使用db dbs

试试此代码

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();
    }

答案 1 :(得分:2)

如果发生 NullPointerException - 就像你说的那样 - 在线:

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

然后很可能您的 dbs 未初始化。在使用之前初始化它:

dbs = getWritableDatabase();

另外,检查Table_Name是否也不为空。