2010-11-23 6 views
0

J'ai un ListView avec un adaptateur personnalisé qui utilise un curseur SQL. Lorsque j'ajoute des éléments à ma liste, l'élément sera ajouté à ma base de données sqlite3 et la liste sera actualisée.problème Android SQLite3 application clé primaire

Mon seul problème est que je suis en mesure d'ajouter des éléments en double, et je ne veux pas que mon application pour permettre à ajouter des doublons.

J'ai ajouté une clé primaire à ma base de données (sur itemNumber), mais la base de données ne semble pas respecter cela. Voici comment je crée ma base de données:

private static final String DB_CREATE_MASTER = "CREATE TABLE " 
      + "MyTable" 
      + " (_id INTEGER, itemNumber TEXT," 
      + "itemPlace TEXT," + "itemTimeTEXT," 
      + "itemCode INTEGER," 
      + "dbdatestamp TEXT" + "PRIMARY KEY(itemNumber)" +");"; 

Est-ce que quelqu'un sait pourquoi je suis en mesure d'ajouter plus de 1 dupliquer itemNumber à mon listview?

Merci!


EDIT:

private static final String DB_CREATE_MASTER = "CREATE TABLE " 
      + "MyTable" 
      + " (_id INTEGER PRIMARY KEY, itemNumber TEXT," 
      + "itemPlace TEXT," + "itemTimeTEXT," 
      + "itemCode INTEGER," 
      + "dbdatestamp TEXT" + "UNIQUE(itemNumber)" +");"; 

EDIT:


Voici comment ajouter la itemNumber à la base de données:

values.put("itemNumber", myClass.itemNumber); 
values.put("itemName", myClass.itemName); 
values.put("itemTime", myClass.itemTime); 
values.put("dbdatestamp", "03/01/1960 08:55"); 
this.db.insert(MY_TABLE, null, values); 

Répondre

1

Votre clé primaire se compose de 2 champs : _id et itemNumber. Cela signifie qu'un objet itemNumber dupliqué n'est pas suffisant pour appliquer la contrainte. Un doublon serait un élément ayant le même _id ET numéro d'élément. Vous pouvez modifier l'instruction CREATE comme ceci

PRIMARY KEY(_id), UNIQUE(itemNumber) 

La contrainte UNIQUE n'autorise pas les numéros d'éléments en double.

+0

Désolé, je ne voulais pas inclure _id dans la clé primaire de mon code affiché. Je suis toujours capable d'ajouter des valeurs dupliquées lorsque je supprime _id en tant que clé primaire OU si je rends le numéro d'élément unique ... Voir la mise à jour ci-dessus .. – littleK

+0

Comment générer des numéros d'article? Etes-vous sûr que vous avez des doublons? – pablochan

+0

Les chiffres sont renvoyés par un service Web. Si vous regardez ma deuxième édition ci-dessus, vous pouvez voir comment j'ajoute le numéro à la base de données. Dans la méthode qui fait ce qui précède, j'ai ajouté une instruction print pour me montrer ce qu'est le itemNumber, et cela montre 100% qu'ils sont des doublons ... – littleK