Android读取sql文件并导入数据库
16lz
2021-01-23
sql文件一般不应该由Android直接执行的,正常应该是先转成db文件直接放入Android中,Android只需执行一些简单sql命令。
但有时有这样的需求怎么办呢,比如你数据库是上个版本放进的,这个版本的更新就是一个sql文件,你重新放一个数据库那用户数据都没了。
这个还是很简单的,从assets读取到sql文件,转成String,获取writeableDatabase,然后执行sql就行了。
[java] view plain copy
- public class MainActivity extends Activity {
- /**
- * 按行读取txt
- *
- * @param is
- * @return
- * @throws Exception
- */
- private String readTextFromSDcard(InputStream is) throws Exception {
- InputStreamReader reader = new InputStreamReader(is);
- BufferedReader bufferedReader = new BufferedReader(reader);
- StringBuffer buffer = new StringBuffer("");
- String str;
- while ((str = bufferedReader.readLine()) != null) {
- buffer.append(str);
- buffer.append("\n");
- }
- return buffer.toString();
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- SQLiteDatabase db = new DatabaseHelper(this, "my.db")
- .getWritableDatabase();
- try {
- InputStream in = getAssets().open("garden.sql");
- String sqlUpdate = null;
- try {
- sqlUpdate = readTextFromSDcard(in);
- } catch (Exception e) {
- e.printStackTrace();
- }
- String[] s = sqlUpdate.split(";");
- for (int i = 0; i < s.length; i++) {
- if (!TextUtils.isEmpty(s[i])) {
- db.execSQL(s[i]);
- }
- }
- in.close();
- } catch (SQLException e) {
- } catch (IOException e) {
- }
- }
- }
更多相关文章
- Android的XML布局文件中layout_width和width的区别
- 【攻克Android (2)】Android各版本、app开发流程、apk构建过程
- Android 资源文件介绍
- 简单的 Android 系统主要版本对比图表
- Android执行文件apk的组成结构
- Android获取App版本号和版本名
- Android的读写文件权限
- android 删除文件以及递归删除文件夹