Android SQLite:如何修复插入到的语法?
我有一个列CARDNUM,我试图在一个名为TOTALCOUNT的表中增加+1。应用程序崩溃,集合附近出现语法错误 这是我的插入声明:Android SQLite:如何修复插入到的语法?,android,sqlite,android-sqlite,insert-into,Android,Sqlite,Android Sqlite,Insert Into,我有一个列CARDNUM,我试图在一个名为TOTALCOUNT的表中增加+1。应用程序崩溃,集合附近出现语法错误 这是我的插入声明: db.execSQL("INSERT INTO "+ DBContract.DBEntry.TABLE_NAME_TOTALCOUNT+" SET "+ DBContract.DBEntry.COLUMN_NAME_CARDNUM + "="+ DBContract.DBEntry.COLUMN_NAME_CARDNUM+"+1"); 我有什么不对劲 priva
db.execSQL("INSERT INTO "+ DBContract.DBEntry.TABLE_NAME_TOTALCOUNT+" SET "+ DBContract.DBEntry.COLUMN_NAME_CARDNUM + "="+ DBContract.DBEntry.COLUMN_NAME_CARDNUM+"+1");
我有什么不对劲
private static final String SQL_CREATE_CARDNUM =
"CREATE TABLE IF NOT EXISTS "+ DBContract.DBEntry.TABLE_NAME_TOTALCOUNT +
"( "+ DBContract.DBEntry.COLUMN_NAME_COUNTID +
" INTEGER PRIMARY KEY UNIQUE , "+
DBContract.DBEntry.COLUMN_NAME_CARDNUM +
" INTEGER DEFAULT 1);";
// Push the database data to the RecyclerView
public List<UserData> getDataFromDB(){
List<UserData> modelList = new ArrayList<>();
String query = "SELECT *,(SELECT " + DBContract.DBEntry.COLUMN_NAME_CARDNUM +
" from " + DBContract.DBEntry.TABLE_NAME_TOTALCOUNT +") from "
+ DBContract.DBEntry.TABLE_NAME_USERINPUTS +";";
SQLiteDatabase db = this.getReadableDatabase();
db.beginTransaction();
Cursor cursor = db.rawQuery(query, null);
try {
if (cursor.moveToFirst()) {
do {
UserData userData = new UserData();
userData.setTodo(cursor.getString(1));
userData.setNote1(cursor.getString(2));
userData.setNote2(cursor.getString(3));
userData.setDuedate(cursor.getString(4));
userData.setDuetime(cursor.getString(5));
userData.setTimestamp(cursor.getLong6));
userData.setCardnum(cursor.getInt(7));
modelList.add(0, userData);
} while (cursor.moveToNext());
}
} finally {
if(cursor !=null && !cursor.isClosed()){
cursor.close();
}
}
db.setTransactionSuccessful();
db.endTransaction();
return modelList;
}
CARDNUM的Logcat显示SelectCardNum fromTotalCount=0。插入的语法不正确 请参阅以下内容: 例如:
INSERT INTO table1 (
column1,
column2 ,..)
VALUES
(
value1,
value2 ,...);
试试这个
db.execSQL("UPDATE "+ DBContract.DBEntry.TABLE_NAME_TOTALCOUNT+" SET "+ DBContract.DBEntry.COLUMN_NAME_CARDNUM + "="+ DBContract.DBEntry.COLUMN_NAME_CARDNUM+"+1");
建议使用WHERE来设置id以更新特定行。您试图使用INSERT来增加一列,但这是无法完成的。但若您仍要使用INSERT语句,则不能在INSERT中使用SET。 插入操作应如下所示:
INSERT INTO TABLE_NAME (cloumn1_name, column2_name, column3_name) VALUES (column1_value,cloumn2_value,column3_value)
UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
您可以通过INSERT语句不更新值。若要更新值,必须使用update语句。在这种情况下,UPDATE语句如下所示:
INSERT INTO TABLE_NAME (cloumn1_name, column2_name, column3_name) VALUES (column1_value,cloumn2_value,column3_value)
UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
据我所知,您不能在INSERT中使用set。它在那里更新。如果我错了,请纠正我。好的,但没有更新。检查@Hello World's answerreference:。。您的插入查询错误@janki gadhiya谢谢我会查出来的…但请让我知道具体的错误!我想使用INSERT向列中添加新行。我认为更新应该只用于编辑/更新现有行数据。请提供建议。如果行不存在,您希望如何将CARDNUM增加1?创建表时,CARDNUM的默认值设置为1:…列\u名称\u CARDNUM+整数默认值1在这种情况下,您必须仅使用插入查询,并将2设置为CARDNUM Column2的值。为什么?在哪里设置值?我以为主键是第0列,而CARDNUM列是1,对吗?