java - 如何使用 OR 条件搜索 SQLITE 数据库 android?
问题描述
我在 sqlite android 上搜索时遇到问题。
我的输入类型是姓名、电话号码、代码。
我想要的是每当用户在搜索栏中键入以下任何类型的输入时,它应该检查它是否存在于任何给定列上并返回值。
例如,如果用户输入名称 ALAN,则 ALAN 应该返回。如果用户输入代码 Jaxxx1,那么它应该搜索值 Jaxxx1 并返回其对应的数据。如果用户使用电话号码搜索,那么它应该返回其相应的数据。
我得到的是什么。下面是我的代码有人请帮助我。
public List<Contacts> search(String keyword) {
List<Contacts> contacts = null;
try {
SQLiteDatabase sqLiteDatabase = getReadableDatabase();
Cursor cursor = sqLiteDatabase.rawQuery("select * from " + TABLE_CONTACTS + " where (" + COLUMN_NAME+" or "+COLUMN_CODE +" or "+COLUMN_PNO + ") like ?", new String[]{"%" + keyword + "%"});
if (cursor.moveToFirst()) {
contacts = new ArrayList<>();
do {
int id = Integer.parseInt(cursor.getString(0));
String cardNo = cursor.getString(1);
String name = cursor.getString(2);
String jacode = cursor.getString(3);
String phno = cursor.getString(4);
Contacts contact = new Contacts();
contact.setId(id);
contact.setCardID(cardNo);
contact.setName(name);
contact.setJacode(jacode);
contact.setPhno(phno);
// Toast.makeText(context,contact.getBalance(),Toast.LENGTH_SHORT).show();
contacts.add(new Contacts(id, cardNo, name, jacode, phno, cplan, rent, balance, zone, oldBalance, paidDate, paidAmount, status));
} while (cursor.moveToNext());
}
} catch (Exception e) {
contacts = null;
}
return contacts;
}
我是这里的新手,请帮助我
解决方案
我认为你在这一行犯了一个错误
Cursor cursor = sqLiteDatabase.rawQuery("select * from " + TABLE_CONTACTS + " where (" + COLUMN_NAME+" or "+COLUMN_CODE +" or "+COLUMN_PNO + ") like ?", new String[]{"%" + keyword + "%"});
你的陈述应该是这样的:
"select * from " + TABLE_CONTACTS + " where " + COLUMN_NAME + " like ?" + " or " + COLUMN_CODE + " like ?" + " or " + COLUMN_PNO +" like ?", new String[]{"%" + keyword + "%","%" + keyword + "%","%" + keyword + "%"});
请检查声明(如果我忘记了双引号)。为了获得结果,您应该始终注意用户类型(大写或小写),以便您可以使用 SQLite 中已经内置的一些函数。
推荐阅读
- python - 学不到很简单的Keras模型
- html - 以角度编辑时未填充下拉菜单和单选按钮表单数组值
- mpi - 在使用 Linux 的 databricks 集群上运行 Open MPI 时出现“没有足够的插槽”错误
- android - react-native cli 和 Expo with Bare 工作流有什么区别?
- mongodb - 如果字段不存在或为空,猫鼬在字段更新时设置默认值
- rsyslog - 如何根据 Rsyslog 中的日志严重性过滤日志?
- javascript - TypeError 创建 Discord Bot - JS
- windows - Powershell 脚本必须以人类可读的格式显示所有工作站
- sql - 转换日期时间格式
- bloc - BLoC 模式最佳实践 - 在 BLoC 类中存储数据是否合法?