2011-09-08 3 views
1

Je crée une base de données et j'insérer une ligne comme ceci:Disallow enregistrements en double et vérifier si la base de données est disponible

/* 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);"); 

J'ai deux questions concernant le code ci-dessus:

  1. Comment interdire les enregistrements en double? Je veux vérifier les données entrantes au moment de l'insertion. Comment puis-je y parvenir? Dois-je utiliser IF NOT EXISTS?

  2. Comment puis-je vérifier si cette base de données est disponible ou non? Jusqu'à présent, sans succès, je l'ai essayé:

    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; 
    } 
    

Toutes les suggestions sur la façon d'y parvenir?

+1

Qu'est-ce qu'un double? Que se passe-t-il lorsque Joe Doe, aux États-Unis, revient un an plus tard et qu'il a maintenant un an de plus? –

+1

stocker la date de naissance, pas l'âge. – njzk2

Répondre

6

Pour éviter les doublons, créez un INDEX UNIQUE sur cette table.

Lors de l'exécution, vous avez au moins deux options:

  1. permettent à l'index vous donne une exception si vous essayez un double, puis prendre cette exception et faire autre chose, ou

  2. Query la table pro-activement pour voir si le nouvel enregistrement existe, et si vous le trouvez, vous savez qu'il y a un doublon, alors faites autre chose.

Questions connexes