java - 如何将 SQL 结果转换为 android studio 上的字符串?
问题描述
我正在使用 RFID 阅读器从 RFID 标签获取 ID (EPC),我正在尝试实现一个代码来检查该 ID 是否存在于 SQL 数据库中(之前创建并存储在 assets 文件夹中)并返回所有 de数据库数据(如果存在)。然后,我想将该数据存储在一个字符串上。
我已经尝试了这里介绍的一些可能的解决方案,但我认为我的代码存在严重问题,因为每次我扫描 RFID 标签时应用程序都会崩溃。
这是我的数据库代码:
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;
import java.util.ArrayList;
import java.util.List;
import mobliescanner.com.grotg.hpp.mobilescanner.model.TagData;
public class Database extends SQLiteAssetHelper {
private static final String DB_NAME="tagDataDB.db";
private static final int DB_VER=1;
public Database(Context context) {
super(context, DB_NAME, null, DB_VER);
}
//Função para pegar a tag pelo ID
public List<TagData> getTagDataByID(String id){
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String[] sqlSelect={"TAG_ID","TAG_NUMBER","TAG_QUAL","TAG_LOCAL","TAG_DESCRICAO","GALERIA_AUTOR","GALERIA_AUTOR_LOCAL"};
String tableName="TagData";
qb.setTables((tableName));
Cursor cursor = qb.query(db,sqlSelect,"ID LIKE ?",new String[]{"%"+id+"%"},null,null,null);
List<TagData> result = new ArrayList<>();
if(cursor.moveToFirst()){
do{
TagData tagdata = new TagData();
tagdata.setId(cursor.getString(cursor.getColumnIndex("TAG_ID")));
tagdata.setIdnum(cursor.getInt(cursor.getColumnIndex("TAG_NUMBER")));
tagdata.setTag(cursor.getString(cursor.getColumnIndex("TAG_QUAL")));
tagdata.setLocaltag(cursor.getString(cursor.getColumnIndex("TAG_LOCAL")));
tagdata.setDesctag(cursor.getString(cursor.getColumnIndex("TAG_DESCRICAO")));
tagdata.setAutor(cursor.getString(cursor.getColumnIndex("GALERIA_AUTOR")));
tagdata.setAutorlocal(cursor.getString(cursor.getColumnIndex("GALERIA_AUTOR_LOCAL")));
result.add(tagdata);
}while (cursor.moveToNext());
}
return result;
}
这是我在 MainActivity 上尝试做的事情:
Database testdb = new Database(this);
String dataresult = String.valueOf(testdb.getTagDataByID(epctag));
其中“epctag”是一个字符串,它存储从阅读器获得的标签 ID。
预期:如果数据库上存在 ID TAG,则返回所有数据库数据,而不是将结果存储到 STRING 中。
实际结果:每次扫描 RFID 标签时应用程序都会崩溃。
解决方案
推荐阅读
- python - 使用映射关系的字典键操作
- visual-studio-code - VS Code 中 appDataPath 和扩展位置的区别
- mysql - mysql为除一之外的所有列选择总和
- mongodb - 在 Power BI 中使用 ID 将两行合并为一行
- sql-server - 如何将 sql server 数据提取到我的 react native 应用程序?
- r - 当 R 中有重复时,保留最新的观察结果
- node.js - 双淘汰,再见玩家场景
- regex - 如何通过正则表达式获取VBScript中两个字符串之间的字符串?
- sql - 如何根据一行中的值使一个标识符的所有值都相同?
- angular - Angular Tabs - 仅使用一个组件