public List<String> getDiseaseBySymptom(String symptom) { SQLiteDatabase db = this.getReadableDatabase(); List<String> diseases = new ArrayList<>(); String selectQuery = "SELECT disease_name FROM disease_symptoms WHERE symptom LIKE '%" + symptom + "%'"; Cursor cursor = db.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { String diseaseName = cursor.getString(cursor.getColumnIndex("disease_name")); diseases.add(diseaseName); } while (cursor.moveToNext()); } cursor.close(); return diseases; } 如何让这个方法获取字符串,如何分解字符串中的关键词,并找出含有全部关键词的一条记录
时间: 2024-04-14 20:30:52 浏览: 108
要使这个方法接受字符串作为输入,并从中提取关键词,然后找到包含所有关键词的一条记录,您可以进行以下修改:
1. 首先,修改方法的参数为接受一个字符串列表,用于传递关键词。您可以将方法签名修改如下:
```java
public List<String> getDiseaseBySymptom(List<String> symptoms) {
// ...
}
```
2. 接下来,您可以使用循环遍历关键词列表,并构建SQL查询语句来匹配含有所有关键词的记录。修改查询语句部分的代码如下:
```java
String selectQuery = "SELECT disease_name FROM disease_symptoms WHERE ";
for (int i = 0; i < symptoms.size(); i++) {
if (i > 0) {
selectQuery += " AND ";
}
selectQuery += "symptom LIKE '%" + symptoms.get(i) + "%'";
}
```
上述代码会根据关键词列表构建出一个类似于以下形式的查询语句:
```
SELECT disease_name FROM disease_symptoms WHERE symptom LIKE '%keyword1%' AND symptom LIKE '%keyword2%' AND symptom LIKE '%keyword3%'
```
3. 最后,在循环结束后,您可以执行查询并获取结果集,然后从中提取疾病名称并返回。您可以使用类似于之前的代码来完成此操作:
```java
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
String diseaseName = cursor.getString(cursor.getColumnIndex("disease_name"));
diseases.add(diseaseName);
} while (cursor.moveToNext());
}
cursor.close();
return diseases;
```
通过以上修改,您的方法将接受一个字符串列表作为输入,从中提取关键词,并构建查询语句来找到包含所有关键词的记录。希望对您有所帮助!如有任何疑问,请随时提问。
阅读全文