java - 如何使用从微调器中选择的项目
问题描述
我有一个微调器。我用数据库表中的数据(一列)填充它。现在,当用户从微调器中选择一个项目时。我想要数据库中的一个函数,它返回所选项目的相应主键。在我的主要活动中,主键应该存储在一个变量中。我怎样才能做到这一点。
这是我在主要活动中的代码:
if(spinner.getSelectedItem() != null){
spinner_text = (String) spinner.getSelectedItem();
try {
substation_number = myDB.spinnerResult(spinner_text);
} catch (NumberFormatException e) {
Toast.makeText(getApplicationContext(), "Please select an item", Toast.LENGTH_SHORT).show();
}
}
这是我在数据库中的功能:
public int spinnerResult(String item_name){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("Select substationNo from " + TABLE_NAME + " where item_name = ?", new String[]{item_name});
return Integer.parseInt(String.valueOf(cursor));
}
解决方案
您获得的游标rawQuery()
应最多返回 1 行(如果item_name
在表中是唯一的)和 1 列。
您必须检查您传递moveToFirst()
的item_name
是否存在于表中,然后substationNo
从游标中提取 的值:
public int spinnerResult(String item_name){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("Select substationNo from " + TABLE_NAME + " where item_name = ?", new String[]{item_name});
int result = 0; // you may change this
if (cursor.moveToFirst()) result = cursor.getInt(0);
cursor.close();
db.close();
return result;
}
如果item_name
您传递的 不存在于表中,则函数返回0
,您可以根据需要更改为-1
,您可以检查它以验证是否item_name
找到了。
推荐阅读
- awk - 删除搜索模式之间的文本/行
- python - 如何检查传递给 filter() 函数的内容
- amazon-dynamodb - 多租户应用程序的 DynamoDB 安全性
- mysql - 如果不存在则创建表与显示表之类
- reactjs - 在危险地反应SetInnerHTML中将json显示为html
- r - 在 TOC 之前将代码添加到 Bookdown gitbook 模板
- swift - Xcode 搜索栏对更改文本或取消单击没有反应
- wordpress - Wordpress 清除页面模板的模板缓存?
- linux - Git克隆/从Windows拉到本地网络中的树莓派
- laravel - 我认为可以分解的控制器逻辑中的分解辅助