[英]Android SQLlite database search method
我的Android sqlite和游標有問題,我想驗證在文本框中輸入的值不在我的數據庫中。
ContenuBDD contenuBdd = new ContenuBDD(MainActivity.this);
contenuBdd.open();
if(contenuBdd.recherche(text.getText().toString())== true)
{
System.out.println("ok");
}
else
{
System.out.println("not ok");
}
contenuBdd.close();
搜索方法代碼:
public boolean recherche(String titre){
Cursor c = bdd.query(TABLE_CONTENU, new String[] {COL_ID, COL_VALEUR}, COL_VALEUR + " LIKE \"" + titre +"\"", null, null, null, null);
if(c == null)
{
return true;
}
else
{
return false;
}
}
現在,即使我輸入的值不在數據庫中,也會顯示“ not ok”
我的請求 :
String query = new String( "select valeur from table_contenu where valeur = "+titre);
我的logcat:
02-12 10:51:02.338: E/AndroidRuntime(11642): android.database.sqlite.SQLiteException: near "=": syntax error (code 1): , while compiling: select valeur from table_contenu where valeur =
您應該更喜歡測試:
if(c.getCount() == 0)
代替
if(c == null)
也許您可以使用原始查詢來管理它:
String q = "SELECT * FROM your_table WHERE titre = titre";
Cursor c= mDb.rawQuery(q, null);
正如我在https://stackoverflow.com/a/24144236/2413303的答案中提到的那樣
您應該執行的查詢方式如下:
private String[] allColumns = { Table1.COLUMN_ID, Table1.COLUMN_NAME,
Table1.COLUMN_OTHERCOLUMN };
public ItemDB findEmployeeById(long id)
{
ItemDB employee = null;
Cursor cursor = database.query(ItemTable.TABLE_NAME, allColumns, ItemTable.COLUMN_ID + " = ?", new String[] {""+id}, null, null, null);
if(cursor.moveToFirst())
{
employee = createItemFromCursor(cursor);
}
return employee;
}
如果您需要專門重命名列(例如,由於適配器需要將id
更改為_id
,則另一種可能的方法是使用rawQuery
:
public Cursor getRawQueryCursor()
{
return database
.rawQuery(
"SELECT id as _id, name, dateFrom || ' - ' || dateTo as date FROM " + ItemTable.TABLE_NAME + " WHERE lower(name) = ?",
new String[] { inputName });
}
我假設,SQLite始終返回Cursor
,但是在未找到任何內容的情況下, Cursor#getCount()
將導致0
,如API中所示。
public boolean CheckIsDataAlreadyInDBorNot(String TableName, String dbfield, String fieldValue)
{
db = this.getReadableDatabase();
String Query = "Select * from " + TableName + " where " + dbfield + "="
+ fieldValue;
Cursor cursor = db.rawQuery(Query, null);
if(cursor.getCount() <=0)
{
return false;
}
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.