Android Schreiben von JsonDaten in eine SqliteDB

Bitte aktiviere JavaScript!
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?
 
A

Anzeige




Schau mal hier —> (hier klicken)
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.
 
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?
 
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?
 
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.
 
A

Anzeige




Vielleicht hilft dir das hier weiter: (klicke hier)
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben