How can I execute a *.sql script on android programmatically? The script is located at /assert folder. My phone is not rooted.
1 Answer
InputStream is = getResources().getAssets().open("SQLScript.sql");
String sql= convertStreamToString(is);
public static String convertStreamToString(InputStream is)
throws IOException {
Writer writer = new StringWriter();
char[] buffer = new char[2048];
try {
Reader reader = new BufferedReader(new InputStreamReader(is,
"UTF-8"));
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} finally {
is.close();
}
String text = writer.toString();
return text;
}
SQLiteDatabase db;
db = openOrCreateDatabase("MyDatabase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null );
db.execSQL(sql);
2 Comments
Paulo Pereira
This just executes the first sql statment. From documentation of execSQL, "Execute a single SQL statement that does not return any data."
TWiStErRob
Not only that, but it explicitly states it now SQLiteDatabase.execSQL(sql): "
@param sql the SQL statement to be executed. Multiple statements separated by semicolons are not supported."