Android Schreiben von JsonDaten in eine SqliteDB


MARJAVA

Mitglied
Hallo zusammen,

Beim Schreiben der JSon-Daten in eine SQLIteDB erhalte ich momentan die Fehlermeldung:

Java:
2019-01-12 16:01:14.003 2744-2744/de.markusc.movieplanet E/AndroidRuntime: FATAL EXCEPTION: main
    Process: de.markusc.movieplanet, PID: 2744
    android.database.sqlite.SQLiteException: near "s": syntax error (code 1): , while compiling: INSERT INTO filme(id,type,title,releasedate,genre,overview,voteaverage,budget,runtime,character,name,profilepath,posterpath) VALUES ('390634','0','劇場版「Fate/stay night [Heaven's Feel] ⅠⅠ. lost butterfly」','2019-01-12','Animation, Action, Fantasy, ','Theatrical-release adaptation of the visual novel Fate/stay night, following the third and final route. (Part 2 of a trilogy.)','6',0,120,'arrayListChara','arrayListActor','arrayListBilder','https://image.tmdb.org/t/p/w500/t0jwlwFUrtkPJoq5JH9YrRVROXZ.jpg')
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
        at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1677)
        at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1608)
        at de.markusc.movieplanet.DownloadTaskDatenFilm.onPostExecute(DownloadTaskDatenFilm.java:149)
        at de.markusc.movieplanet.DownloadTaskDatenFilm.onPostExecute(DownloadTaskDatenFilm.java:22)
        at android.os.AsyncTask.finish(AsyncTask.java:695)
        at android.os.AsyncTask.-wrap1(Unknown Source:0)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Diese zeigt mir, dass meine SqliteDB nicht mit den Inhalten klarkommt die aus den JSondaten stammen. Habt ihr ne Idee, wie ich die Daten konvertieren kann um sie besser in die DB zu integrieren.
Bisher ersetze ich alle ' und " durch Lehrzeichen, doch das fängt nicht alle Fehler ab. Sollte ich die Strings als Blob abspeichern? Was meint ihr?
 

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

httpdigest

Bekanntes Mitglied
Anscheinend ersetzt du nicht alle ' Zeichen:
INSERT INTO filme(id,type,title,releasedate,genre,overview,voteaverage,budget,runtime,character,name,profilepath,posterpath) VALUES ('390634','0','劇場版「Fate/stay night [Heaven's Feel] ⅠⅠ. lost butterfly」','2019-01-12','Animation, Action, Fantasy, ','Theatrical-release adaptation of the visual novel Fate/stay night, following the third and final route. (Part 2 of a trilogy.)','6',0,120,'arrayListChara','arrayListActor','arrayListBilder','https://image.tmdb.org/t/p/w500/t0jwlwFUrtkPJoq5JH9YrRVROXZ.jpg')

Wenn du einfach ein JDBC PreparedStatement mit Parametern verwendest, wird das Problem automatisch durch JDBC gelöst, ohne, dass du irgendetwas ersetzen musst. Ich vermute mal, dass du aktuell das SQL-Statement mit den Argumenten per String-Konkatenation irgendwie manuell zusammenbaust.
 

MARJAVA

Mitglied
Weil ich mir auch nicht sicher bin, ob es die richtige Methode ist, die Daten so in die DB zu schreiben. Beim Lesen der Daten habe ich ja auch wieder den Aufwand. Ist es vielleicht sinnvoller die Daten als Paket einzutragen? Und wie macht man das am besten?
 

mrBrown

Super-Moderator
Mitarbeiter
Kommt drauf an, was deine "JsonDaten" überhaupt sind. In deinem Beispiel scheinen das einfach nur Strings und keine Objekte zu sein, also speichere die doch einfach als String?
 

MARJAVA

Mitglied
Das sind Strings, die jedoch sich durch enthaltene Zeichen nicht einfach als String übergeben lassen, sondern eben erst bearbeitet werden müssen, damit die sql-codes unempfindlich reagieren.
Eine Alternative wäre halt schön, etwas bei dem die SQL-Befehle unempfindlich reagieren.
 

Passende Stellenanzeigen aus deiner Region:


Neue Themen

Oben