我要做的是逐个获取条目,这是代码。
Teams.Java
public String getData(String key) {
// TODO Auto-generated method stub
String[] columns = new String[] { Key };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null,
null, null);
String result = "";
int iName = c.getColumnIndex(Key);
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
result = result + "," + c.getString(iName);
}
return result;
}
活动
MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView t1 = (TextView) findViewById(R.id.tvINames);
Teams stat = new Teams(this);
stat.open();
String Names = stat.getName("KEY_TEAMS");
stat.close();
t1.setText(Names);
如果需要logcat,请告诉我。
答案 0 :(得分:0)
首先,行上的'Key':
String[] columns = new String[] { Key };
和
int iName = c.getColumnIndex(Key);
使用大写'K',因为method-header中的参数以普通'k'命名:
public String getData(String key) {
您是否在Teams.java中定义了名为“Key”的字段? 我可以想象这不会导致代码的预期行为,因为甚至没有使用该参数。
我肯定会改变的另一件事是使用StringBuilder(或StringBuffer,如果必须是线程安全的)来连接getData()方法中的字符串。
为了迭代游标我只会使用:
while (c.moveToNext()) {
...
}
以下一行存在另一个不一致之处:
String Names = stat.getName("KEY_TEAMS");
你正在调用另一种方法而不是显示的getData(String key)-method。
如果我可以重写你的方法,我会建议这样的事情:
//Teams.Java
public String getData(String key) {
String[] columns = new String[] { key };
Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, null, null);
final int iName = c.getColumnIndex(key);
StringBuilder result = new StringBuilder();
while (c.moveToNext()) {
result.append(c.getString(iName));
result.append(",");
}
return result.toString();
}
AND
//MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Teams stat = new Teams(this);
try {
stat.open();
TextView t1 = (TextView) findViewById(R.id.tvINames);
t1.setText(stat.getData("KEY_TEAMS"));
} catch (Exception e) {
Log.e(MainActivity.class.getSimpleName(), "some meaningful error message 42!", e);
} finally {
stat.close();
}
}
一般来说,将游标的所有访问权限包装到try-catch-finally块中是一个非常好的主意,以确保它在任何情况下都是关闭的!