所以我最近学习了如何使用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数据库。
答案 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 这样的东西。
如果没有在上面添加其他空格,则表将被创建,但列将为:-
然后插入将失败,因为您希望存在的列将不存在。