尝试将数据插入sqlte时发生错误

时间:2019-03-27 01:58:40

标签: java android sqlite

所以我最近学习了如何使用sqlite在android中插入数据,并且发生了此错误,我不知道为什么会发生此错误,我试图重读我的书,但对此没有任何解决方案。 / p>

我已重新阅读我的书,并在互联网上找到了问题。

SQLiteDatabase db;
public DBAdapter(Context context,String name, SQLiteDatabase.CursorFactory 
factory, int version){
    super(context,DATABASE_NAME,factory,DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db){
    String CREATE_TABLE = "CREATE TABLE" + TABLE_CONTACTS + "(" + nomber +
            "INTEGER PRIMARYKEY," + namapen + "TEXT," + idPen + "INTEGER," 
  + namaGej + "TEXT," + idGej + "TEXT )";
    db.execSQL(CREATE_TABLE);
  }

logcat中的错误:

Process: com.example.lordbramasta.pakar, PID: 20404
    android.database.sqlite.SQLiteException: near "TABLEtb_penyakit": syntax error (code 1 SQLITE_ERROR): , while compiling: CREATE TABLEtb_penyakit(nomberINTEGER PRIMARYKEY,namapenTEXT,idPenINTEGER,namaGejTEXT,idGejTEXT )
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:901)

我希望将数据插入sqlite数据库。

1 个答案:

答案 0 :(得分:2)

更改:-

public void onCreate(SQLiteDatabase db){
    String CREATE_TABLE = "CREATE TABLE" + TABLE_CONTACTS + "(" + nomber +
            "INTEGER PRIMARYKEY," + namapen + "TEXT," + idPen + "INTEGER," 
  + namaGej + "TEXT," + idGej + "TEXT )";
    db.execSQL(CREATE_TABLE);
  }

public void onCreate(SQLiteDatabase db){
    String CREATE_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + nomber +
            " INTEGER PRIMARY KEY," + namapen + " TEXT," + idPen + " INTEGER," 
  + namaGej + " TEXT," + idGej + " TEXT )";
    db.execSQL(CREATE_TABLE);
  }

然后:-

  • 删除应用程序的数据,或
  • 卸载应用程序

,然后重新运行该应用程序。

说明

之所以直到您尝试插入才出现问题,是因为这是数据库打开的第一次尝试。实例化数据库助手不会导致创建数据库(即,执行 onCreate 方法,仅当尝试打开数据库时自动执行 onCreate (隐式插入),而数据库实际上不存在。

应删除该应用程序的数据(或卸载该应用程序,这将删除该应用程序的数据)的原因是,这将删除数据库,因此 onCreate 方法将运行(不会)当数据库存在时运行)。

实际错误是因为CREATE期望在您的案例CREATE TABLE table_name中创建的类型,而您已解析为CREATE TABLEtb_penyakit的SQL,因此您试图告诉它创建 CREATE TABLEtb_penyakit ,对于SQlite,没有 CREATE TABLEtb_penyakit 这样的东西。

如果没有在上面添加其他空格,则表将被创建,但列将为:-

enter image description here

然后插入将失败,因为您希望存在的列将不存在。