1

我创建了这个方法来了解我的 Sqlite 数据库中是否存在联系人。

public Cursor doesContactExist(String name) 
{
    return db.rawQuery("select * from contacts where name = ?; ", new String[] {name});
}

但是每当它从另一个活动中调用时,它只会在这一点上崩溃......

if(db.doesContactExist(name)==null){   <== crashes here
                     try {                       
                        db.open();      
                        db.insertContact(name,cNumber);//name and number are Strings
                        listItems.add(name);           //a List View array
                        db.close();
                        adapter.notifyDataSetChanged(); //adapter for ListView

                            } 
                     catch (Exception e) {
                    //some code                                               }
                    }

据我说,rawQuery 有一些麻烦,尤其是其中的 sql 字符串。

请问有什么帮助吗?

4

2 回答 2

1

您尝试在数据库打开之前进行选择:

if(db.doesContactExist(name)==null){   <== it is closed here
                 try {                       
                    db.open();      <== open the db here

将其更改为:

db.open();
if(db.doesContactExist(name)==null){
          try {                       
于 2013-03-21T14:11:01.057 回答
1

我想它可能会帮助你..

db.open();
if(db.doesContactExist(name)==null)
{
     try
     {
          // Your Code Here..
     }
}

在数据库类中

public Cursor doesContactExist(String name) 
{
    return db.rawQuery("SELECT * FROM contacts WHERE name=?", new String[ {name.toString()});
}

在使用任何数据库函数之前使用 db.open() 方法,因为它会打开您与数据库的连接.. 最后不要忘记像 db.close() 这样关闭数据库,如果您在代码中的任何地方使用 Cursor 请关闭它还。它不会产生任何错误,但会给您警告。:)

于 2013-03-21T14:24:19.073 回答