2016-05-11 4 views
-2

私は、TOTALCOUNTという表の+1で増分しようとしている列CARDNUMを持っています。SQLite:INSERT INTOで構文を修正するにはどうすればよいですか?

db.execSQL("INSERT INTO "+ DBContract.DBEntry.TABLE_NAME_TOTALCOUNT+" SET "+ DBContract.DBEntry.COLUMN_NAME_CARDNUM + "="+ DBContract.DBEntry.COLUMN_NAME_CARDNUM+"+1"); 

私は右の何を取得していない午前:アプリはこれが私のINSERT文がされ

「SET」近い構文エラーでクラッシュしましたか? 。

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を選択)」CARDNUMショーのためのLogcat = 0

+0

なぜdownvote:その場合はUPDATE文は次のようになりますか? – AJW

+1

私は知っている通りにINSERTで "set"を使うことはできません。そこにはUPDATEがあります。私が間違っていれば私を修正してください。 – Raghavendra

+0

OKですが、更新はありません。 – AJW

答えて

0

この

db.execSQL("UPDATE "+ DBContract.DBEntry.TABLE_NAME_TOTALCOUNT+" SET "+ DBContract.DBEntry.COLUMN_NAME_CARDNUM + "="+ DBContract.DBEntry.COLUMN_NAME_CARDNUM+"+1"); 

を試してみてください特定の行を更新するためにWHEREを使用してidを設定することをお勧めします。

+0

私はINSERTを使って列に新しい行を追加したいと思います。 UPDATEは、既存の行データを編集/更新する場合にのみ使用してください。お知らせ下さい。 – AJW

+0

行がまだ存在していない場合、 'CARDNUM'をどのようにインクリメントしたいですか? –

+0

テーブルが作成されると、CARDNUMのデフォルト値は1に設定されます。 "... COLUMN_NAME_CARDNUM + " INTEGER DEFAULT 1) " – AJW

0

INSERTを使用して列を増分しようとしていますが、これは実行できません。しかし、まだINSERTステートメントを使用したい場合はSETINSERTで使用することはできません。 INSERT操作は次のようになります。

INSERT INTO TABLE_NAME (cloumn1_name, column2_name, column3_name) VALUES (column1_value,cloumn2_value,column3_value) 

あなたはINSERT声明を経由して値を更新NOUすることができます。値を更新する場合は、UPDATEステートメントを使用する必要があります。

UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition]; 
関連する問題