![](/img/trans.png)
[英]Selecting Specific rows from SQLite Database-ANDROID-SQLite Database
[英]Selecting in SQLite Database Android
每當我創建一個新數據庫並向其中插入數據時,我都可以選擇插入的數據,但是第二次我插入表並嘗試選擇它時,它將顯示第一個數據本身。
這是onClickListener的代碼(從表中選擇):
mydb = openOrCreateDatabase("Countz_DB",MODE_PRIVATE,null);
和
mnew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
c = mydb.rawQuery("Select * from Countz",null);
if (c.moveToFirst()){
name = c.getString(0);
desc = c.getString(1);
Snackbar.make(v, "Name:"+name+" Desc:"+desc, Snackbar.LENGTH_LONG).show();
}
}
});
這是我用於將值插入表中的代碼:
public void InsertintoCount(){
String sqlc = "INSERT INTO Countz VALUES('"+name+"','"+desc+"','"+x+"','"+cDT+"');";
newdb.execSQL(sqlc);
}
那是因為您的光標總是移到click事件的第一個位置。 嘗試執行以下操作:
mnew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
c = mydb.rawQuery("Select * from Countz",null);
if (c.moveToLast()){
name = c.getString(0);
desc = c.getString(1);
Snackbar.make(v, "Name:"+name+" Desc:"+desc, Snackbar.LENGTH_LONG).show();
}
}
});
如果要遍歷表中的所有行,則::
mnew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
c = mydb.rawQuery("Select * from Countz",null);
if(c>0) {
c.moveToFirst();
do {
name = c.getString(0);
desc = c.getString(1);
Snackbar.make(v, "Name:"+name+" Desc:"+desc, Snackbar.LENGTH_LONG).show();
} while(c.moveToNext());
}
}
});
之后,您將獲得所有過帳的價值。
如果要使用最近插入的值,則必須在插入操作后返回rowId,然后使用查詢“ SELECT * FROM table WHERE id =“ + id;”從數據庫中獲取行。
但是處理數據庫事務的更好方法是創建一個處理程序類,然后從您需要的任何位置訪問它。
遵循本教程:: SQLite數據庫示例
那是因為您只讀取一次結果。 Cursor
有幾行,您必須經過它們。
您必須遍歷Cursor
。
請嘗試以下操作:
if (c.moveToFirst()){
do {
name = c.getString(0);
desc = c.getString(1);
Snackbar.make(v, "Name:"+name+" Desc:"+desc, Snackbar.LENGTH_LONG).show();
} while (c.moveToNext());
}
告訴我們是否可行。
嘗試這個
if (c.moveToFirst()){
do {
name = c.getString(0);
desc = c.getString(1);
Snackbar.make(v, "Name:"+name+" Desc:"+desc, Snackbar.LENGTH_LONG).show();
} while(c.moveToNext());
}
第二次我插入表格並嘗試選擇它時,它顯示了第一個數據本身。
那是因為您要選擇第一個條目本身。
if (c.moveToFirst()){
name = c.getString(0);
desc = c.getString(1);
Snackbar.make(v, "Name:"+name+" Desc:"+desc, Snackbar.LENGTH_LONG).show();
}
注意c.moveToFirst()
。 這將帶您到光標的第一項。 如果要最后輸入,請使用c.moveToLast()
。
或者,如果您想查看所有條目,請執行以下操作:
if (c.moveToFirst()){
while (!c.isAfterLast) {
name = c.getString(0);
desc = c.getString(1);
Snackbar.make(v, "Name:"+name+" Desc:"+desc, Snackbar.LENGTH_LONG).show();
c.moveToNext();
}
}
c.isAfterLast()
告訴光標是否指向最后一行之后的位置(這是您要中斷循環的點)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.