开发者社区> 问答> 正文

android sqlite无法读取数据:报错

public List<person> findall() {
SQLiteDatabase db = helper.getReadableDatabase();
List<person> persons = new ArrayList<person>();
// Cursor cursor = db.rawQuery("select * from person", null);
Cursor cursor = db.query("person", new String[] { "name", "id",
"number" }, null, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
person p = new person(id, name, number);
persons.add(p);
}
cursor.close();
db.close();
return persons;

}


以上是查找findall的代码 

public void testfindall() throws Exception {
persondao2 dao = new persondao2(getContext());
List<person> persons = dao.findall();
for (person p : persons) {
System.out.println(p.toString());
}
}


这是测试代码 


我确认数据库里有数据 我用第三方软件查看 可以看到数据库的内容 但是利用测试代码读取出来的是这样


刚学android开发 求大神帮看看哪里出了问题 


domain的代码如下

package com.example.domain;


public class person {
private int id;
private String name;
private String number;

public person() {
}

public person(int id, String name, String number) {
this.id = id;
this.name = name;
this.number = number;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}



}


这里我觉得不可能有问题 都是自动生成的 但是日志返回来的东西里面有domain 所以我就贴一下~~

展开
收起
kun坤 2020-06-07 17:11:16 651 0
1 条回答
写回答
取消 提交回答
  • 建议:

    1.使用Log.i()...查看LOG,不要使用print.

    2.重写person类的tostring方法.

    ######十分感谢 确实如此 原来是我没写tostring的方法~~
    2020-06-07 17:11:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
手机卫士性能优化方案-Android篇 立即下载
Android内存泄漏自动化链路分析组件Probe 立即下载
微信SQLite数据库损坏恢复实践 立即下载