在onClick()
事件中,我尝试使用INSERT INTO命令在SQLite数据库表(TOTALCOUNT)中的CARDNUM列中将计数器值递增1。
尝试运行时发生错误:
db.execSQL(INCREMENT_COUNT2);
Android Studio提供以下错误消息
"SQLiteException: near "cardnum": syntax error (code 1): , while compiling: INSERT INTO totalcount(cardnum) VALUES cardnum+1"
我在这里想念的是什么? 在INSERTion上有更好的方法来实现增量吗?
DatabaseHelper.java文件:
// Increment the counter in the TOTALCOUNT Table in the database.
public void insertIntoTableTOTALCOUNT() {
// Get a reference to a writable DB
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransaction();
db.execSQL(INCREMENT_COUNT1);
db.execSQL(INCREMENT_COUNT2);
db.setTransactionSuccessful();
db.endTransaction();
if(db.isOpen())
db.close();
}
// Set the counter to a default value of zero.
public static final String INCREMENT_COUNT1 = " INSERT OR IGNORE INTO " + TABLE_NAME_TOTALCOUNT +
"(" + COLUMN_NAME_CARDNUM+")" + " VALUES (0)";
// Increment the Cardnum count by +1 for each onClick.
public static final String INCREMENT_COUNT2 = "INSERT INTO " + TABLE_NAME_TOTALCOUNT + "(" + COLUMN_NAME_CARDNUM+") VALUES " + COLUMN_NAME_CARDNUM +"+1";
答案 0 :(得分:2)
这是正确的SQL命令:
public static final String INCREMENT_COUNT2 = "INSERT INTO " + TABLE_NAME_TOTALCOUNT + "(" + COLUMN_NAME_CARDNUM + ") VALUES (" + (COLUMN_NAME_CARDNUM + 1) + ")";
但使用绑定参数将是更好的选择。
答案 1 :(得分:1)
如果我理解你的问题,我认为你想用+1更新COLUMN_NAME_CARDNUM的值,而不是INSERT一个新行。如果这是正确的,你的陈述应该是
UPDATE TABLE_NAME_TOTALCOUNT SET COLUMN_NAME_CARDNUM=COLUMN_NAME_CARDNUM+1 WHERE <filter criteria>
如果你确实要用COLUMN_NAME_CARDNUM + 1插入一个新行,那么你必须从DB中获取COLUMN_NAME_CARDNUM的MAX,然后递增它并插入
SELECT MAX(COLUMN_NAME_CARDNUM) FROM TABLE_NAME_TOTALCOUNT
然后将其递增1并插入。
答案 2 :(得分:1)
使Method通过添加或递增来传递Cardnum值1.然后运行insert Query。 Insertion有两种类型的SQL查询。
原始查询,即字符串insertdata =&#34; INSERT INTO&#34; + TABLE_NAME_TOTALCOUNT +&#34;(&#34; + COLUMN_NAME_CARDNUM +&#34;)VALUES&#34; + COLUMN_NAME_CARDNUM +&#34; + 1&#34;;
另一种方法是使用ContentValues:
public void insertDatatoDatabase(String data1,String data2){
ContentValues values = new ContentValues();
values.put(COLUMN1, data1);
values.put(COLUMN2, data2);db1.insert(TABLE_DETAIL, null, values);
}
你在String&#34中添加+1; &#34;它是一个整数。尝试在括号中添加它们或在插入之前添加数字并仅从onclick发送它。
答案 3 :(得分:0)
public static final String INCREMENT_COUNT2 = "INSERT INTO " + TABLE_NAME_TOTALCOUNT + "(" + COLUMN_NAME_CARDNUM+") VALUES (" + (COLUMN_NAME_CARDNUM=COLUMN_NAME_CARDNUM+1)+")";
//使用它可能会有效
答案 4 :(得分:0)
不应该
INCREMENT_COUNT2 = "INSERT INTO " + TABLE_NAME_TOTALCOUNT + "(" + COLUMN_NAME_CARDNUM+") VALUES (" + COLUMN_NAME_CARDNUM +"+1)"