0

これは作成された私のテーブルです:

public void onCreate(SQLiteDatabase db) {

    String insertNewFormDetails = "create table if not exists " + TABLE_NAME + " ( " + BaseColumns._ID + " integer primary key autoincrement, " 
                                                            + NAME + " text not null, "
                                                            + SCHOOL + " text not null, "
                                                            + CURRENTDATE + " text not null, "
                                                            + FORMTYPE + " text not null);";
    // Execute a single SQL statement that is NOT a SELECT or any other SQL statement that returns data.
    db.execSQL(insertNewFormDetails);
}

これで、自動インクリメントを持つこの主キーができました。その列のコンテンツを実際に取得するにはどうすればよいですか?

UPDATEクエリに対して今行っていること。

DBAddForm dbOpener2 = new DBAddForm(this);
    SQLiteDatabase sqliteDatabase2 = dbOpener2.getReadableDatabase();
    ContentValues contentValues2 = new ContentValues();

    String selectQuery = "SELECT  * FROM " + "FormDetails";
    SQLiteDatabase db = dbOpener2.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()) {
        do {
                contentValues2.put("school",school);
                sqliteDatabase2.update("FormDetails", contentValues2, cursor.getString(0) + " = " +primaryKey , null);
        } while (cursor.moveToNext());
    }

ただし、現在は、最初の列のすべての行を更新しています。と等しい場合にのみ行を更新したかったのprimaryKeyです。アドバイスしてください?ありがとう!私はすべての試みと本当に混乱しました。

4

3 に答える 3

0

まず、の SCHOOL代わりにを使用する必要があり"school"ます。そしてTABLE_NAME"FormDetails"ハードコードされた文字列の問題を探しています。

次に、Cursor.getString(0)との値を出力またはログに記録しますprimaryKey。その後、問題を自分でデバッグできる場合があります

于 2013-01-08T08:22:47.277 に答える
0

これを試して、

削除"FormDetails"して、に置き換えTABLE_NAMEます。

次に、それを削除schoolして、に置き換えSCHOOLます。

クエリはすべてのselectレコードを返します。私はCursor.getString(0)常に最初の値を取得していると思います。primary keyまた、印刷して正しく更新されているか確認してください。

ループの代わりにループをdo While試してくださいfor

for(int i=0;i<cursor.getCount();i++)
{
//Now check your cursor value with the primary key. It may work
Use this cursor.getString(i)
}
于 2013-01-08T09:06:47.897 に答える
0

みんな、ありがとう!私の答えは提案で調整されました。今は動作します。

DBAddForm dbOpener2 = new DBAddForm(this);
    SQLiteDatabase sqliteDatabase2 = dbOpener2.getReadableDatabase();
    ContentValues contentValues2 = new ContentValues();

    String selectQuery = "SELECT _id FROM " + DBAddForm.TABLE_NAME;
    SQLiteDatabase db = dbOpener2.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
                contentValues2.put("SCHOOL",school);
                contentValues2.put("NAME", name);
                //update query
                sqliteDatabase2.update("FormDetails", contentValues2, "_id" +  " = " + primaryKey  , null);
        }
        while (cursor.moveToNext());
    }
    sqliteDatabase2.close();
}
于 2013-01-09T02:45:13.757 に答える