Using execSQL for INSERT operation in Android SQLite
You can use it, it is just not recommended because you won't receive any information that might be generated by the DB. The methods you are supposed to use return codes/cursors/other info to let you know what happened so you can deal with them if there is a problem.
The key is this line in the execSQL
docs:
It has no means to return any data (such as the number of affected rows). Instead, you're encouraged to use insert...
The important word there is "encouraged". You can use execSQL
for any SQL command, but you get no feedback on the process, which makes it rather dangerous to use for something where you should get feedback (unless you don't care than an insert failed, or only 2 of 5 records got updated).
Imran Rana
Working as an Assistant Professor at the Department of Computer Science & Engineering of Khulna University of Engineering & Technology (KUET)
Updated on June 14, 2022Comments
-
Imran Rana almost 2 years
From the documentation and this post I know
execSQL()
executes a single SQL statement that is not aSELECT
or any other SQL statement that returns data. It is also mentioned thatexecSQL()
should not be used for inserting.But I'm using
execSQL()
for inserting like:db.execSQL("INSERT INTO LIST VALUES('খবর');"); //where LIST is a table
This is working perfectly for me (there is no
SELECT
statement with thisINSERT
), but I was told not to use this here.So, my question is: does the
INSERT
statement return a value even though there is noSELECT
statement attached to it?