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 String に問題があります。

何か助けてください。

4

2 に答える 2

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 に答える
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 に答える