Android SQLite数据库搜索不返回行
我有一个方法,我想在其中传递一个字符串,并在数据库中搜索匹配项。我不熟悉数据库,所以我束手无策。几天来,我一直在谷歌上搜索和尝试不同的查询,结果就是不起作用。游标创建得很好,所以我认为查询没有任何语法问题。游标不为null,其中有一个游标对象,并且其中也有所有3列。但是没有争吵。当我传入一个我知道应该有匹配项的字符串时,它不会返回任何数据。方法如下:Android SQLite数据库搜索不返回行,android,android-sqlite,Android,Android Sqlite,我有一个方法,我想在其中传递一个字符串,并在数据库中搜索匹配项。我不熟悉数据库,所以我束手无策。几天来,我一直在谷歌上搜索和尝试不同的查询,结果就是不起作用。游标创建得很好,所以我认为查询没有任何语法问题。游标不为null,其中有一个游标对象,并且其中也有所有3列。但是没有争吵。当我传入一个我知道应该有匹配项的字符串时,它不会返回任何数据。方法如下: public Business getBusiness(String search) { File database=currentCon
public Business getBusiness(String search) {
File database=currentContext.getDatabasePath(DATABASE_NAME);
SQLiteDatabase db = SQLiteDatabase.openDatabase(database.getAbsolutePath(),
null, Context.MODE_PRIVATE);
Cursor cursor = db.query(TABLE_NAME, new String[] {COLUMN_ONE, COLUMN_TWO,
COLUMN_THREE}, COLUMN_ONE + " like ' " + search + " '",
null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Business business = new Business(currentContext, cursor.getString(0),
cursor.getString(1), cursor.getString(2),
cursor.getInt(3), cursor.getInt(4));
db.close();
return null;
}
尝试更改您的like语句以包含通配符 例如从
" like ' " + search + " '"
到
或
LIKE模式中的百分比符号(“%”)与字符串中的任何零个或多个字符序列相匹配。LIKE模式中的下划线(“”)匹配字符串中的任何单个字符
相信这是有帮助的。祝您好运您已经尝试了此代码。。。这段代码运行正常
Cursor cursor;
try
{
cursor = db.query
(
TABLE_NAME,
new String[] { TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO, TABLE_ROW_THREE, TABLE_ROW_FOUR, TABLE_ROW_FIVE, TABLE_ROW_SIX },
TABLE_ROW_ID + "=" + rowID,
null, null, null, null, null
);
cursor.moveToFirst();
if (!cursor.isAfterLast())
{
do
{
String row_item_id=cursor.getLong(0);
String row_item_name=cursor.getString(1);
String row_item_basic_price=cursor.getFloat(2);
String row_item_tax=cursor.getFloat(3);
String row_item_shipping=cursor.getFloat(4);
String row_item_price=cursor.getFloat(5);
byte[] imgByte = cursor.getBlob(6);
Bitmap row_item_bitmap=BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length);
}
while (cursor.moveToNext());
}
cursor.close();
}
catch (SQLException e)
{
Log.e("DB ERROR", e.toString());
e.printStackTrace();
}
" like '_" + search + "_'"
Cursor cursor;
try
{
cursor = db.query
(
TABLE_NAME,
new String[] { TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO, TABLE_ROW_THREE, TABLE_ROW_FOUR, TABLE_ROW_FIVE, TABLE_ROW_SIX },
TABLE_ROW_ID + "=" + rowID,
null, null, null, null, null
);
cursor.moveToFirst();
if (!cursor.isAfterLast())
{
do
{
String row_item_id=cursor.getLong(0);
String row_item_name=cursor.getString(1);
String row_item_basic_price=cursor.getFloat(2);
String row_item_tax=cursor.getFloat(3);
String row_item_shipping=cursor.getFloat(4);
String row_item_price=cursor.getFloat(5);
byte[] imgByte = cursor.getBlob(6);
Bitmap row_item_bitmap=BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length);
}
while (cursor.moveToNext());
}
cursor.close();
}
catch (SQLException e)
{
Log.e("DB ERROR", e.toString());
e.printStackTrace();
}