Error with SQLite in Android -
06-19 12:36:06.181: e/inside log(15543): /sdcard/songs/(04) fall out boy - sugar, we're goin' down [2005].mp3 06-19 12:36:06.286: e/imediametadataretriever(15543): extractmetadata error 06-19 12:36:06.391: e/sqlitelog(15543): (1) near "re": syntax error 06-19 12:36:06.421: e/androidruntime(15543): fatal exception: main 06-19 12:36:06.421: e/androidruntime(15543): android.database.sqlite.sqliteexception: near "re": syntax error (code 1): , while compiling: insert songdatabase(name,artist,genre,composer,albumname,year,path) values('sugar, we're goin' down','fall out boy','punk','null','from under cork tree','2005','/sdcard/songs/(04) fall out boy - sugar, we're goin' down [2005].mp3') code:
if(name!=null) { if(name.contains("'")) { name.replaceall("'", "\'"); } } if(genre!=null) { if(genre.contains("'")) { genre.replaceall("'", "\'"); } } if(composer!=null) { if(composer.contains("'")) { composer.replaceall("'", "\'"); } } if(albumname!=null) { sqlitedatabase database=getwritabledatabase(); database.execsql("insert songdatabase(name,artist,genre,composer,albumname,year,path) values('"+name+"','"+artist+"','"+genre+"','"+composer+"','"+albumname+"','"+year+"','"+pathfile+"')"); }
you need double ('') apostrophes (') in strings.
otherwise, treated string delimiters, breaking string values.
a better solution, though, pass bound parameters (using ? placeholders, filled values stored in string array pass).
way, string conversion handles automatically, , don't have double quotes.
ok, analyzing code, problem pops out clearly:
don't perform quote replacement on artist, album name , on file path.
on name, genre , composer.
in case, path giving error.
it's clear error message:
/sdcard/songs/(04) fall out boy - sugar, we're goin' down [2005].mp3
Comments
Post a Comment