android - Android Studio - 光标子句的问题 WHERE OR
问题描述
我正在使用带有 Where 条件的游标调用在 SQLite 中创建的表并且工作正常,但是当我添加子句“OR”时它不起作用。我的意思是,如果我插入第一个字段的值,它会正常工作,但是当我插入第二个字段的值时,它会在存在时显示“动词不存在”。
还有另一种方法可以使用 rowQuery 来调用带有查询的表吗?
这是代码:
public List<Items> mostrarVerbos(){
BaseDeDatos admin = new BaseDeDatos(getApplicationContext(), "verbos.db",
getApplicationContext(), 19);
SQLiteDatabase db = admin.getReadableDatabase();
String[] parametros = {etVerbos.getText().toString()};
Cursor cursor = db.rawQuery("SELECT * FROM verbos WHERE verbo_por =? OR verbo_esp =?", parametros);
List<Items> verbos= new ArrayList<>();
if(cursor.moveToFirst()){
do {
verbos.add(new Items(cursor.getString(1), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7), cursor.getString(8)));
}while (cursor.moveToNext());
}else{
Toast.makeText(getApplicationContext(), "The verb doesn't exist", Toast.LENGTH_LONG).show();
}
return verbos;
}
我的数据库:
package com.example.rodrigo.libros;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class BaseDeDatos extends SQLiteOpenHelper {
public BaseDeDatos(Context context, String s, Context applicationContext, int i) {
super(context, "verbos.db", null, 21);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table verbos(id integer, verbo_por text, verbo_esp text, referencia text, eu text, tu text, voce text, nos text, voces text)");
db.execSQL("insert into verbos values(1, 'abalar', 'zarandear', 'zarandeo', 'abalo', 'abalas', 'abala', 'abalamos', 'abalam')," +
"(1, NULL, NULL, 'zarandeaba', 'abalava', 'abalavas', 'abalava', 'abalávamos', 'abalavam')," +
"(1, NULL, NULL, 'zarandeé', 'abalei', 'abalaste', 'abalou', 'abalamos', 'abalaram')," +
"(1, NULL, NULL, 'zarandeara', 'abalara', 'abalaras', 'abalara', 'abaláramos', 'abalaram')," +
"(1, NULL, NULL, 'zarandearé', 'abalarei', 'abalarás', 'abalará', 'abalaremos', 'abalarão')," +
"(1, NULL, NULL, 'zarandearía', 'abalaria', 'abalarias', 'abalaria', 'abalaríamos', 'abalariam')," +
"(1, NULL, NULL, 'zarandee', 'abale', 'abales', 'abale', 'abalemos', 'abalem')," +
"(1, NULL, NULL, 'zarandease', 'abalasse', 'abalasses', 'abalasse', 'abalássemos', 'abalassem')," +
"(1, NULL, NULL, 'zarandeando', 'abalando', 'abalando', 'abalando', 'abalando', 'abalando')," +
"(1, NULL, NULL, 'zarandeado', 'abalado', 'abalado', 'abalado', 'abalado', 'abalado')");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS verbos");
db.execSQL("create table verbos(id integer, verbo_por text, verbo_esp text, referencia text, eu text, tu text, voce text, nos text, voces text)");
db.execSQL("insert into verbos values(1, 'abalar', 'zarandear', 'zarandeo', 'abalo', 'abalas', 'abala', 'abalamos', 'abalam')," +
"(1, NULL, NULL, 'zarandeaba', 'abalava', 'abalavas', 'abalava', 'abalávamos', 'abalavam')," +
"(1, NULL, NULL, 'zarandeé', 'abalei', 'abalaste', 'abalou', 'abalamos', 'abalaram')," +
"(1, NULL, NULL, 'zarandeara', 'abalara', 'abalaras', 'abalara', 'abaláramos', 'abalaram')," +
"(1, NULL, NULL, 'zarandearé', 'abalarei', 'abalarás', 'abalará', 'abalaremos', 'abalarão')," +
"(1, NULL, NULL, 'zarandearía', 'abalaria', 'abalarias', 'abalaria', 'abalaríamos', 'abalariam')," +
"(1, NULL, NULL, 'zarandee', 'abale', 'abales', 'abale', 'abalemos', 'abalem')," +
"(1, NULL, NULL, 'zarandease', 'abalasse', 'abalasses', 'abalasse', 'abalássemos', 'abalassem')," +
"(1, NULL, NULL, 'zarandeando', 'abalando', 'abalando', 'abalando', 'abalando', 'abalando')," +
"(1, NULL, NULL, 'zarandeado', 'abalado', 'abalado', 'abalado', 'abalado', 'abalado')");
}
}
解决方案
推荐阅读
- html - 如何创建一个只是轮廓的盒子阴影?
- oracle - Oracle Peoplesoft 和 SQL 开发人员
- xamarin.ios - 我正在尝试与 WKWebView 中的现有用户代理一起发送自定义字符串, - Xamarin iOS
- css - Bootstrap 4链接悬停下划线
- exoplayer - ExoPlayer 仅在 HLS 流上使用最低再现
- c# - 并发集合的最快迭代?
- sql-server - SQL Server:如何在存储过程中创建表?
- pyspark - 在 pyspark 中动态添加小时到时间戳
- javascript - 将文件类型限制为多个文件上传器
- actionscript-3 - AS3:协商 FTP-ES 连接