java - Android SQLite:我无法选择整数字段
问题描述
我无法使用 java 和 sqlite 在 android 中运行此代码。
此代码不起作用:
Cursor c = read.rawQuery("SELECT * FROM frentista WHERE cast(codigo as text) = '4",null);
此代码有效:
Cursor c = read.rawQuery("SELECT * FROM frentista WHERE nome = 'DANIEL'",null);
我尝试过使用 CAST 和不使用 CAST。
我用这段代码创建了我的表:
sql = " CREATE TABLE IF NOT EXISTS frentista ( "+
" codigo INTEGER,"+
" nome TEXT,"+
" rfid TEXT,"+
" senha TEXT,"+
" premia TEXT"+
" )";
这是我的全部方法
public Frentista select(int codigo) {
String[] rfid;
List<FrentistaRfid> listFrentistaRfid = new ArrayList<>();
Frentista frentista = new Frentista();
try {
Cursor c = read.rawQuery("SELECT * FROM frentista WHERE nome = 'DANIEL'",null);
Log.i("QTD_FRENT", String.valueOf(c.getCount()));
c.moveToFirst();
while (c.isAfterLast() == false) {
Log.i("SELECT_VEND", "ENTROU NO WHILE");
frentista.setCodigo(c.getInt(c.getColumnIndex("codigo")));
frentista.setNome(c.getString(c.getColumnIndex("nome")));
Log.i("FRENTISTA_SELECT", frentista.getNome());
frentista.setSenha(c.getString(c.getColumnIndex("senha")));
frentista.setPremia(c.getString(c.getColumnIndex("premia")));
rfid = c.getString(c.getColumnIndex("rfid")).split(",");
for(String item : rfid) {
listFrentistaRfid.add(new FrentistaRfid(item));
}
frentista.setRfid(listFrentistaRfid);
c.moveToNext();
}
} catch (Exception e) {
Log.i("ERRO SELECT FRENTISTA: ",e.getMessage());
}
return frentista;
}
当我尝试不带 WHERE 子句的 SELECT 时,它是有效的。我的问题是 INTEGER FIELD 的 WHERE。
当我的位置在 INTEGER 字段时,光标保持空白
解决方案
尝试,
Cursor c = read.rawQuery("SELECT * FROM frentista WHERE codigo = " + 4 ,null);
推荐阅读
- linux - 是否可以在程序中提取指令特定能耗?
- docker - Dockerfile 中是否有等效的预处理器指令?
- java - 如何在 JavaFX 中设置 TextField 的尺寸(特别是宽度)?
- ruby-on-rails - 提交 Rails 表单会导致页面不存在
- python - Python Scipy stats pdf概率分布函数总和不为1
- java - Android 如何在所有活动中动态更改主题?
- c# - 我对 Parallel.ForEach 做错了什么
- ruby-on-rails - 如何将我的 Ruby on Rails 5 应用程序拆分为多个文件夹?
- hyperledger-fabric - Fabric 错误中的 BNA 创建
- javascript - 在一页上添加多个图片库