如何修复INSERT INTO命令的语法错误?

时间:2016-06-16 06:59:26

标签: android sqlite android-sqlite sql-insert

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";

5 个答案:

答案 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查询。

  1. 原始查询,即字符串insertdata =&#34; INSERT INTO&#34; + TABLE_NAME_TOTALCOUNT +&#34;(&#34; + COLUMN_NAME_CARDNUM +&#34;)VALUES&#34; + COLUMN_NAME_CARDNUM +&#34; + 1&#34;;

  2. 另一种方法是使用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); }

  3. 你在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)"