【问题标题】:Creating table dynamically (On Button Click) In Android在Android中动态创建表(点击按钮)
【发布时间】:2014-03-30 21:10:50
【问题描述】:

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

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错误
  • 将 logcat 添加到主线程 ^^
  • 第 62 行:dbs.execSQL("DROP TABLE IF EXISTS" + Table_Name);
  • 您是否在任何地方初始化了 dbs?它不在提供的代码中...
  • 不,这导致了问题。现在可以了。

标签: android sqlite dynamic


【解决方案1】:

在某些地方你使用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();
    }

【讨论】:

  • 我使用 dbs(global variable) 创建表,使用 db(local) 在表中插入数据。但是,将 db 更改为 dbs 并没有帮助并导致相同的错误。
  • @Priyabrata 尝试 Log.i 并找出它执行到哪一步。会更容易帮助你
  • 它执行第一行并崩溃。即 DROP TABLE IF EXISTS 行
  • 你有这个代码dbs = this.getWritableDatabase();
【解决方案2】:

如果 NullPointerException 发生 - 正如你所说 - 在线:

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

那么很可能您的 dbs 没有初始化。在使用前初始化它:

dbs = getWritableDatabase();

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

【讨论】:

  • 看准!!成功了!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多