2011-09-08 67 views
1

我創建一個數據庫,我插入一行像這樣:不允許重複記錄,並檢查數據庫可用

/* Add two DataSets to the Table. */ 
myDB.execSQL("INSERT INTO " 
       + MY_DATABASE_TABLE 
       + " (LastName, FirstName, Country, Age)" 
       + " VALUES ('Gramlich', 'Nicolas', 'Germany', 20);"); 
myDB.execSQL("INSERT INTO " 
       + MY_DATABASE_TABLE 
       + " (LastName, FirstName, Country, Age)" 
       + " VALUES ('Doe', 'John', 'US', 34);"); 

我有一個關於上面的代碼兩個問題:

  1. 如何禁止重複記錄?我想在插入時檢查傳入的數據。我怎樣才能做到這一點?我應該使用IF NOT EXISTS嗎?

  2. 如何檢查數據庫是否可用?到目前爲止,沒有任何成功,我已經試過:

    private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/myDBName"; 
    private static String DB_NAME = "myDBName"; 
    
    private boolean checkDataBase() { 
        SQLiteDatabase checkDB = null; 
        try { 
         checkDB = SQLiteDatabase.openDatabase(DB_PATH, null, 
         SQLiteDatabase.OPEN_READONLY); 
         checkDB.close(); 
        } catch (SQLiteException e) { 
         // database doesn't exist yet. 
        } 
        return checkDB != null ? true : false; 
    } 
    

就如何實現這一目標有什麼建議?

+1

什麼是副本?一年後美國的Joe Doe回來了,現在比一歲大的時候會發生什麼? –

+1

存儲生日,而不是年齡。 – njzk2

回答

6

以防止重複在該表上創建UNIQUE INDEX。

在運行時,你至少有兩個選項:

  1. 讓索引給你一個例外,如果你試圖重複,然後捕獲了異常,做別的事情,或者

  2. 查詢該表主動查看新記錄是否存在,如果您發現它存在重複,那麼請做其他事情。