700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android读取sql文件并导入数据库

Android读取sql文件并导入数据库

时间:2024-01-06 16:55:42

相关推荐

Android读取sql文件并导入数据库

sql文件一般不应该由Android直接执行的,正常应该是先转成db文件直接放入Android中,Android只需执行一些简单sql命令。

但有时有这样的需求怎么办呢,比如你数据库是上个版本放进的,这个版本的更新就是一个sql文件,你重新放一个数据库那用户数据都没了。

这个还是很简单的,从assets读取到sql文件,转成String,获取writeableDatabase,然后执行sql就行了。

[java] view plain copy publicclassMainActivityextendsActivity{ /** *按行读取txt * *@paramis *@return *@throwsException */ privateStringreadTextFromSDcard(InputStreamis)throwsException{ InputStreamReaderreader=newInputStreamReader(is); BufferedReaderbufferedReader=newBufferedReader(reader); StringBufferbuffer=newStringBuffer(""); Stringstr; while((str=bufferedReader.readLine())!=null){ buffer.append(str); buffer.append("\n"); } returnbuffer.toString(); } @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SQLiteDatabasedb=newDatabaseHelper(this,"my.db") .getWritableDatabase(); try{ InputStreamin=getAssets().open("garden.sql"); StringsqlUpdate=null; try{ sqlUpdate=readTextFromSDcard(in); }catch(Exceptione){ e.printStackTrace(); } String[]s=sqlUpdate.split(";"); for(inti=0;i<s.length;i++){ if(!TextUtils.isEmpty(s[i])){ db.execSQL(s[i]); } } in.close(); }catch(SQLExceptione){ }catch(IOExceptione){ } } } 只有一个要注意的地方,执行sql时只会执行到分号的位置,所以要按分号分割,执行多次。执行完后在/data/data/packageName下面就可以看到db文件了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。