Java 语法错误(代码1):,编译时:插入rest_表(0,TABLENUMBER)值(?,)
我试图在Android studio中使用sqlite创建一个表,但是当我单击向表中添加数据的按钮时,我得到了这个错误Java 语法错误(代码1):,编译时:插入rest_表(0,TABLENUMBER)值(?,),java,android,sqlite,Java,Android,Sqlite,我试图在Android studio中使用sqlite创建一个表,但是当我单击向表中添加数据的按钮时,我得到了这个错误 07-22 14:19:01.836 23818-23818/com.example.user.restapp E/SQLiteLog: (1) no such table: rest_tables 07-22 14:19:01.851 23818-23818/com.example.user.restapp E/SQLiteDatabase: Error inserting
07-22 14:19:01.836 23818-23818/com.example.user.restapp E/SQLiteLog: (1) no such table: rest_tables
07-22 14:19:01.851 23818-23818/com.example.user.restapp E/SQLiteDatabase: Error inserting Tablenumber=2 Taken=0
07-22 11:12:20.576 21924-21924/com.example.user.restapp E/SQLiteLog: (1) near "0": syntax error
07-22 11:12:20.596 21924-21924/com.example.user.restapp E/SQLiteDatabase: Error inserting 0=0 TABLENUMBER=1
android.database.sqlite.SQLiteException: near "0": syntax error (code 1): , while compiling: INSERT INTO rest_tables(0,TABLENUMBER) VALUES (?,?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1093)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:670)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:59)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1590)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1462)
at com.example.user.restapp.DatabaseHelper.InsertData(DatabaseHelper.java:39)
在MainActivity类中按钮的OnClickListener中,我写道:
boolean isInserted = myDB.InsertData("2","0");
if(isInserted == true)
Toast.makeText(getApplicationContext(), "Table Added successfully", Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(), "Table Not Added", Toast.LENGTH_LONG).show();
有人能告诉我到底是什么导致了这个错误吗?试试这个:
public SQLiteDatabase db;
private final Context context;
private DataBaseHelper dbHelper;
public DataBaseAdapter(Context _context)
{
context = _context;
dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DataBaseAdapter open() throws SQLException
{
db = dbHelper.getWritableDatabase();
return this;
}
public void close()
{
db.close();
}
public SQLiteDatabase getDatabaseInstance()
{
return db;
}
public boolean InsertData(String tablenumber,String taken)
{
ContentValues contentValues = new ContentValues();
contentValues.put("TABLENUMBER",tablenumber);
contentValues.put("TAKEN",taken);
db.insert(TABLE_NAME,null,contentValues);
在你的主要活动中:
//if statement
DataBaseAdapter.InsertData(f2","0");
Toast.makeText(activity.this, "Data save successfully !", Toast.LENGTH_LONG).show();
}
}else {
Toast.makeText(activity.this, "Never insert!", Toast.LENGTH_LONG).show();
}
0不是有效的列名,这是语法错误的直接原因
将采用与您的架构相对应的列名,而不是0。我更改了代码,但仍然收到相同的错误。logcat指出错误出现在这两行代码中:long result=db.insertTABLE_NAME,null,contentValues;布尔值isInserted=myDB.InsertData2,0;我还注意到logcat在说:没有这样的table@Hussein这是因为您的isInserted是一个布尔值,它只接受正确或错误的答案。因此,我建议您将其更改为字符串或整数,并使用if语句说明数据是否成功插入,然后isinserted=true@Hussein检查答案,可能会有帮助
//if statement
DataBaseAdapter.InsertData(f2","0");
Toast.makeText(activity.this, "Data save successfully !", Toast.LENGTH_LONG).show();
}
}else {
Toast.makeText(activity.this, "Never insert!", Toast.LENGTH_LONG).show();
}
public static final String TAKEN = "0";
contentValues.put(TAKEN,taken);