【发布时间】:2016-02-09 09:48:02
【问题描述】:
在我的数据库表中插入行并尝试获取它们以显示后,我得到一个空白活动。这让我感到困惑,因为它曾经在一个月前工作,但现在不行了。
我什至通过tutorial link 了解更多信息,但这一切都是徒劳的。
下面是数据库表的构造函数部分:
// Emptry constructor
public Contact() {
}
// Constructor
public Contact(int _contactid, String contactphone, String contactlmp) {
this._contactid = _contactid;
this.contactphone = contactphone;
this.contactlmp = contactlmp;
}
// Constructor
public Contact(String contactphone, String contactlmp) {
this.contactphone = contactphone;
this.contactlmp = contactlmp;
}
下面是我用来检索表中所有元素的数据库函数:
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<>();
String query = "SELECT * FROM " + TABLE_CONTACTS + ";";
SQLiteDatabase db = this.getWritableDatabase();
Cursor c = db.rawQuery(query, null);
if(c != null)
c.moveToFirst();
// Loop through all rows and add to list
while(!c.isAfterLast()) {
Contact contact = new Contact();
contact.set_contactid(Integer.parseInt(c.getString(0)));
contact.setContactphone(c.getString(1));
contact.setContactlmp(c.getString(2));
contactList.add(contact);
c.moveToNext();
}
return contactList;
}
下面是对该函数的调用,它使用结果在该活动上打印出来。这嵌入在 Activity 的 onCreate() 函数中的线程中:
contacts = (TextView) findViewById(R.id.contacts);
dbHandler = new MyDBHandler(this, null, null, 1);
Runnable r = new Runnable() {
@Override
public void run() {
//dbString = dbHandler.databaseToString();
int i = 1;
dbContacts = dbHandler.getAllContacts();
for(Contact cn : dbContacts) {
dbString += i + " " + cn.getContactphone() + " " + cn.getContactlmp() + "\n";
i++;
}
}
};
Thread thread = new Thread(r);
thread.start();
contacts.setText(dbString);
以下是数据库联系人的 getter 和 setter 方法,它们在同一应用程序的另一个上下文中使用时可以工作:
// Getter and Setter methods
public int get_contactid() {
return _contactid;
}
public void set_contactid(int _contactid) {
this._contactid = _contactid;
}
public String getContactlmp() {
return contactlmp;
}
public void setContactlmp(String contactlmp) {
this.contactlmp = contactlmp;
}
public String getContactphone() {
return contactphone;
}
public void setContactphone(String contactphone) {
this.contactphone = contactphone;
}
我可能做错了什么?为什么突然停止工作?
【问题讨论】:
-
如果你修改了你的数据库内容......比如表格、行和列。那么您需要更改数据库名称和数据库版本。
-
我没有修改我的数据库内容,但我按照你的建议尝试了,但一无所获
-
读取表时,我们需要调用 SQLiteDatabase db = this.getReadableDatabase();
-
试过了,还是不行