我关注this tutroial about using your own SQLite database。我按照教程中的描述完成了这些步骤:
DataBaseHelper
类复制到我的项目包中。您可以看到类代码there 然后,我刚刚向DataBaseHelper
类添加了一个方法fetchData
。它只是获取一个具有给定名称的整个表:
public Cursor fetchData(String table) {
String[] selectionArgs = new String[] {"*"};
return myDataBase.query(table, null, null, selectionArgs, null, null, null);
}
之后,在我的一个活动课程中,我做到了这一点:
DataBaseHelper myDbHelper;
myDbHelper = new DataBaseHelper(this);
try {
myDbHelper.createDataBase();
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
try {
myDbHelper.openDataBase();
} catch (SQLException sqle) {
throw sqle;
}
TextView txt = (TextView) findViewById(R.id.txt);
try {
//I will use my method to fetch a table named: myTable
Cursor c = myDbHelper.fetchData("myTable");
if((Object)c.getCount() != null)
txt.setText(c.getCount());
else
txt.setText("null");
} catch(Exception e) {
txt.setText("error");
}
但是,我在TextView中不断收到'错误'。我的方式有问题吗?
答案 0 :(得分:1)
我的问题与SQLite无关。这是一个愚蠢的错误: - \
错误在第二行:
if((Object)c.getCount() != null)
txt.setText(c.getCount());
必须是这样的:
txt.setText(""+c.getCount());
setText()
方法接受ChaSequence
,getCount()
方法返回Integer
,这些方法不兼容。你可以通过添加空字符串来解决这个问题:)
谢谢大家。
答案 1 :(得分:0)
public Cursor fetchData(String table) {
return myDataBase.query(table, null, null, null, null, null, null);
}
似乎你对selectionArgs
参数有错误的想法。在documentation中,它说:
您可以在选择中包含? 将被来自的值替换 selectionArgs,为了他们 出现在选择中。价值 将被绑定为字符串。
答案 2 :(得分:0)
您尝试将int转换为Object,然后将转换值与null进行比较。我会说你的代码可能会在那里破解。