0

使用数据库时,当我调用 getContact() 函数时,我得到了奇怪的结果。

功能如下:

public List<Contact> getContacts(){
        List<Contact> contactList = new ArrayList<Contact>();
        Cursor cursor = getReadableDatabase().rawQuery("SELECT contact FROM contactlist", new String[] {});
        if(cursor.moveToFirst()){
            do{
                Contact contact = new Contact();
                contact.setName(cursor.getString(0));
                contactList.add(contact);
            }while(cursor.moveToNext());
        }
        return contactList;
    }

正如人们所看到的,我只是想从以下函数中获取联系人姓名。但我最终得到这样的东西:

0 NAME1 null
0 NAME2 null
0 NAME3 null

我的数据库中有以下列:

id
contact
phoneNumber

有人可以帮我解决这个问题,所以我只能取回 NAME。

我正在按如下方式创建数据库:

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    String CREATE_CONTACTS_TABLE = "CREATE TABLE contactList ( id INTEGER PRIMARY KEY, contact TEXT, phoneNumber TEXT)";
    db.execSQL(CREATE_CONTACTS_TABLE);
}

联系类别:

public class Contact {

    int _id;
    String _name;
    String _phoneNumber;

    public Contact(){

    }

    public Contact(int id, String name, String _phoneNumber){
        this._id = id;
        this._name = name;
        this._phoneNumber = _phoneNumber;
    }

    public Contact(String name, String _phoneNumber){
        this._name = name;
        this._phoneNumber = _phoneNumber;
    }

    public Contact(String name){
        this._name = name;
    }

    public int getID(){
        return this._id;
    }

    public void setID(int id){
        this._id = id;
    }

    public String getName(){
        return this._name;
    }

    public void setName(String name){
        this._name = name;
    }

    public String getPhoneNumber(){
        return this._phoneNumber;
    }

    public void setPhoneNumber(String phoneNumber){
        this._phoneNumber = phoneNumber;
    }

}
4

2 回答 2

0

尝试

cursor.getString(cursor.getColumnIndexOrThrow("contact"));
于 2013-09-18T00:56:18.970 回答
0

你确定你打开了正确的数据库?我知道我有多个数据库,您可能想考虑使用 SQLiteOpenHelper 打开数据库并解析它。您的查询看起来一般,但我会确保您通过使用“select *”而不是特定列并使用 cursor.getColumnIndex("contact") 引用列的索引来获取数据库中的条目。

哦,确保在最后关闭光标。

于 2013-09-18T01:04:04.643 回答