私が を得ると仮定しCursor
ますdb.query()
。
次に、行のフィールドを変更するdb.update()
と、この行はCursor
以前に照会されたものに含まれます。このカーソルのデータは変更されますか?
このような:
Cursor cur = db.query("[some parameter can get row 0]");
cur.moveToFirst;
int a = cur.getInt(0);
db.update("[some parameter can modify row 0 col 0]");
int b = cur.getInt(0);
(a==b) は真か偽か?
====== 2012.10.1 編集 =========
私はプロのプログラマーではなく、忙しすぎて最近はコーディングできません。
もし私があなたを不幸にしたら、本当にごめんなさい。
やっと一週間休みが取れました(笑)。
次のようなコーディングを行います。
SQLiteOpenHelper h = null;
SQLiteDatabase db = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
h=new SQLiteOpenHelper(this, "test.db", null,1){
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
arg0.execSQL("CREATE TABLE t1 (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT )");
arg0.execSQL("INSERT INTO t1 (name) VALUES ('name_wrong')");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}};
db=h.getWritableDatabase();
Cursor cur = db.query("t1", null, null, null, null, null, null);
cur.moveToFirst();
String s1=cur.getString(1);
db.execSQL("UPDATE t1 SET name = 'name_right'");
String s2=cur.getString(1);
Log.d("","s1 = "+s1);
Log.d("","s2 = "+s2);
Log.d("","s1 == s2 is "+s1.equals(s2));
Log.d("","requery...");
cur = db.query("t1", null, null, null, null, null, null);
cur.moveToFirst();
s2=cur.getString(1);
Log.d("","s1 = "+s1);
Log.d("","s2 = "+s2);
Log.d("","s1 == s2 is "+s1.equals(s2));
}
そしてlogcatは次のように言います:
10-01 03:11:28.356: D/(1514): s1 = name_wrong
10-01 03:11:28.356: D/(1514): s2 = name_wrong
10-01 03:11:28.356: D/(1514): s1 == s2 is true
10-01 03:11:28.356: D/(1514): requery...
10-01 03:11:28.356: D/(1514): s1 = name_wrong
10-01 03:11:28.356: D/(1514): s2 = name_right
10-01 03:11:28.356: D/(1514): s1 == s2 is false
だから私は答えを得たと思います 皆さんありがとう。