2010-06-13 7 views
0

Hallo tous,SQLite: 2 problèmes en travaillant avec table

J'ai un objet SQLiteDatabase db, je veux créer une table db avec le code suivant

db.execSQL("CREATE TABLE IF NOT EXISTS "+ TABLE2_NAME + " (exer_nr INTEGER PRIMARY KEY ,exerText  varchar(250),answerA varchar(250),answerB varchar(250),answerC varchar(250),answerD varchar(250))"); 

Une erreur se produit. Pourquoi? Est-ce trop grand? Comment puis-je le réparer?

Un autre problème: Je souhaite insérer une ligne dans la table, dont la colonne "exerText" contient le code suivant dans son contenu.

main() 
{ int m=12, n=34; 
printf("%d%d", m+ +,+ +n); 
printf("%d%d\n",n+ +,+ +m); 
} 

Une erreur se produit en raison des symboles "" et "" dans le code. Comment puis-je résoudre ce problème?

Merci beaucoup

+1

Quelle erreur obtenez-vous de votre appel CREATE TABLE? –

+0

Je n'ai pas de message d'erreur concret, mais ce qui suit: L'entrée actuelle du chemin de classe appartient au conteneur 'Android 2.1' qui ne permet pas de modifier les pièces jointes source sur ses entrées. Une Exception a été affichée et le débogage s'est terminé automatiquement. – TianDong

Répondre

0

"CREATE TABLE IF NOT EXISTS" est sqlite3 seule. Utilisez-vous sqlite2?

+0

Il doit être sqlite3, car le code suivant fonctionne correctement db.execSQL ("CREATE TABLE SI NOT EXISTS" + TABLE1_NAME + (exam_nr INTEGER PRIMARY KEY AUTOINCREMENT, réponse varchar (50)) "); – TianDong

0

Vérifiez que le nom de la table que vous transmettez comporte un espace incorporé. Dans tous les cas, il serait préférable de mettre des crochets autour du nom de la table et mieux encore d'utiliser un paramètre pour passer dans le nom de la table.

0

Vous ne savez pas du tout Android, mais après vos commentaires, peut-être la version Android de sqlite a une limite sur la taille des lignes. Pour vérifier ceci, changez la longueur des colonnes de 250 à 50 et voyez si cela fonctionne.

En ce qui concerne l'insertion, vous pouvez résoudre le problème en doublant le caractère que vous utilisez pour quoting les valeurs. Ainsi, si vous devez insérer quote_'_and_double_quote_"_end, vous pouvez procéder de l'une des deux manières suivantes:

INSERT INTO TABLE test_table (mytext) VALUES ('quote_''_and_double_quote_"_end'); 
INSERT INTO TABLE test_table (mytext) VALUES ("quote_'_and_double_quote_""_end");