Comment puis-je récupérer des données à partir de la base de données à l'aide du curseur? (Android, SQLite)
Je suis coincé. Je ne peux pas savoir ce que je fais de mal, alors, s'il vous plaît aider quelqu'un.
Si c'est assez simple, je ne comprends pas comment en fait de la base de données ressemble.
Voici le code que j'ai utiliser pour insérer des données dans une table dans la base de données:
EditText title = (EditText)findViewById(R.id.Title);
String Title = title.getText().toString();
EditText d = (EditText)findViewById(R.id.director);
String Director = d.getText().toString();
SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS MyFilms (idFilm INTEGER PRIMARY KEY AUTOINCREMENT, Title VARCHAR, Director VARCHAR, Year INTEGER, Rating INTEGER);");
db.execSQL("INSERT INTO MyFilms (Title) VALUES('" + Title + "');");
db.execSQL("INSERT INTO MyFilms (Director) VALUES('" + Director + "');");
db.close();
Fait ce code me donne un tableau avec des colonnes idfilm
, Title
, Director
, Year
, Rating
?
Si c'est le cas, il y a toujours un problème lorsque j'essaie de récupérer tous les titres de Title
colonne à l'aide de ce code:
SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null);
Cursor c = db.rawQuery("SELECT * FROM MyFilms",null);
c.moveToFirst();
while (c.isAfterLast() == false) {
String Title = c.getString(c.getColumnIndex("Director"));
stringList.add(Title); //This I use to create listlayout dynamically and show all the Titles in it
c.moveToNext();
}
Le journal des erreurs:
05-21 17:50:14.666: E/AndroidRuntime(27045): FATAL EXCEPTION: main
05-21 17:50:14.666: E/AndroidRuntime(27045): java.lang.NullPointerException
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.AbsListView.obtainView(AbsListView.java:1409)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.ListView.onMeasure(ListView.java:1127)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.View.measure(View.java:8313)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:566)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:381)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.View.measure(View.java:8313)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.View.measure(View.java:8313)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.LinearLayout.measureVertical(LinearLayout.java:531)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.LinearLayout.onMeasure(LinearLayout.java:309)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.View.measure(View.java:8313)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.widget.FrameLayout.onMeasure(FrameLayout.java:250)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.View.measure(View.java:8313)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.ViewRoot.performTraversals(ViewRoot.java:839)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.view.ViewRoot.handleMessage(ViewRoot.java:1859)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.os.Handler.dispatchMessage(Handler.java:99)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.os.Looper.loop(Looper.java:123)
05-21 17:50:14.666: E/AndroidRuntime(27045): at android.app.ActivityThread.main(ActivityThread.java:3683)
05-21 17:50:14.666: E/AndroidRuntime(27045): at java.lang.reflect.Method.invokeNative(Native Method)
05-21 17:50:14.666: E/AndroidRuntime(27045): at java.lang.reflect.Method.invoke(Method.java:507)
05-21 17:50:14.666: E/AndroidRuntime(27045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-21 17:50:14.666: E/AndroidRuntime(27045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-21 17:50:14.666: E/AndroidRuntime(27045): at dalvik.system.NativeStart.main(Native Method)
Pourquoi ne DDMS jeter NullPointerException? Comment pourrais-je obtenir les données à partir de "Titre"? J'ai essayé d'utiliser le c.getString(), mais quand j'ai demander c.getString(1) il y a encore NullPointerException si elle renvoie "Directeur" lorsque j'ai mis c.getString(2). S'il vous plaît, à l'aide!
OriginalL'auteur zeliboba_fett | 2012-05-21
Vous devez vous connecter pour publier un commentaire.
Votre problème se produit lorsque vous renseignez la base de données (votre premier segment de code).
Vous avez besoin de combiner les
INSERT
états:Sinon, vous vous retrouvez avec des lignes qui contiennent une valeur null pour
Title
ouDirector
.(Remarque: de Ne pas utiliser le SQL de la notation ci-dessus, car il peut vous laisser vulnérable à une injection SQL. J'ai seulement écrit de cette manière pour des raisons de simplicité. Dans le code de production, vous devez utiliser des paramètres ou assainir vos valeurs. Ne devenez pas une victime de Peu De Bobby Tables).
MODIFIER
Voici quelques threads concernant les requêtes préparées:
J'ai édité ma réponse...
Oh, c'est vraiment très sage, je n'ai même pas y penser! Merci beaucoup! La seule chose que je voudrais vous demander, c'est de me donner un lien vers un tutoriel où je peux apprendre à faire ce que vous avez dit à propos des paramètres de désinfection et de valeurs! Je serais très utile! Encore une fois, merci beaucoup! P. S. bande Dessinée, c'est hilarant!
Voir modifier...
merci encore une fois! Je suis très heureux de votre réponse!!
OriginalL'auteur Tony the Pony
si votre insérée correctement les valeurs de edittext boîte. alors ces étapes .
Récupérer des valeurs
Afficher les valeurs d'une liste
La déclaration de l'affiche comme une liste de la classe étend une ListActivity.
OriginalL'auteur
Utiliser ce code.
OriginalL'auteur Hardik Chauhan