2013-03-21 42 views
1

有這種方法,我已經創建知道,如果一個接觸我的SQLite數據庫存在。的Android SQLite的rawQuery給予麻煩

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是有一些troulble,尤其是在它的SQL字符串。

請幫忙嗎?

+0

請發表日誌貓。 – 2013-03-21 14:08:33

+0

不使用rawQuery。發佈堆棧跟蹤。在查詢之前打開數據庫,而不是在(!)之後。 – njzk2 2013-03-21 14:21:53

回答

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 {      
+0

謝謝@Stefan是:) – 2013-03-21 14:14:11

+0

不,我只是一個大學畢業生。並正在爲這個大學項目工作。 – 2013-03-21 14:22:44

+0

哦,對不起,我不是用於stackoverflow。接受答案;)謝謝。 – 2013-03-21 14:28:32

1

我認爲它可以幫助你..

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

和在數據庫類

使用任何數據庫功能,因爲它會打開與數據庫的連接..,最後不要忘記關閉像db.close(數據庫)之前

使用db.open()方法,如果你使用的是光標在任何地方代碼請關閉這也。它不會產生任何錯誤,但它會給你警告。 :)

+0

謝謝:)已經得到了答案 – 2013-03-21 14:43:19