为了账号安全,请及时绑定邮箱和手机立即绑定

当我尝试将数据插入 sqlte 时出错

当我尝试将数据插入 sqlte 时出错

翻翻过去那场雪 2022-09-07 16:05:48
所以我最近学习如何使用sqlite在Android中插入数据,并且发生了这个错误,我不知道为什么会发生这个错误,我试图重新阅读我的书,我没有任何解决方案。我重读了我的书,并在互联网上发现了这个问题。SQLiteDatabase db;public DBAdapter(Context context,String name, SQLiteDatabase.CursorFactory factory, int version){    super(context,DATABASE_NAME,factory,DATABASE_VERSION);}@Overridepublic 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 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

更改 :-


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期望在您的案例中创建的内容的类型,而您已经解析为SQL,因此您试图告诉它创建一个CREATE TABLEtb_penyakit并且对于SQlite来说,没有CREATE TABLEtb_penyakit这样的东西。CREATE TABLE table_nameCREATE TABLEtb_penyakit

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

//img1.sycdn.imooc.com//631851000001bd6705520026.jpg

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


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 52 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信