android中引用项目工程中的sqlite文件
16lz
2021-01-25
采用将项目中的sqlite文件拷到android内存卡上的固定位置,先判断位置上是否存在sqlite文件,不存在则复制文件。
sqlite可放在res的raw目录下,亦可放在assets下,放在assets下,可新建其他层次目录,本例选择assets
Sqlite文件testDatabase.db在工程的assets下db下,复制到sdcard中testdb下
数据库中有表test1,列id int ,num int , data string
首先,添加sdcard权限在AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在activity中有如下代码
sqlite可放在res的raw目录下,亦可放在assets下,放在assets下,可新建其他层次目录,本例选择assets
Sqlite文件testDatabase.db在工程的assets下db下,复制到sdcard中testdb下
数据库中有表test1,列id int ,num int , data string
首先,添加sdcard权限在AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在activity中有如下代码
button2.setOnClickListener(new Button.OnClickListener() { @Override publicvoid onClick(View arg0) { try{ String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/testdb"; //将要存放于的文件夹 String DATABASE_FILENAME = "testDatabase.db"; //文件名 String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME; File dir = new File(DATABASE_PATH); // 如果/sdcard/testdb目录中存在,创建这个目录 if (!dir.exists()) dir.mkdir(); // 如果在/sdcard/testdb目录中不存在 // test.db文件,则从asset\db目录中复制这个文件到 // SD卡的目录(/sdcard/testdb) if (!(new File(databaseFilename)).exists()) { // 获得封装testDatabase.db文件的InputStream对象 AssetManager asset=getAssets(); InputStream is=asset.open("db/testDatabase.db"); FileOutputStream fos = new FileOutputStream(databaseFilename); byte[] buffer = newbyte[8192]; int count = 0; // 开始复制testDatabase.db文件 while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); asset.close(); } SQLiteDatabase mSQLiteDatabase=openOrCreateDatabase(databaseFilename, Activity.MODE_PRIVATE, null);//有则打开,没有创建 Cursor cur=mSQLiteDatabase.rawQuery("select * from table1", null); if(cur!=null){ if(cur.moveToFirst()){ do{ int idColumnIndex=cur.getColumnIndex("id"); int numColumnIndex=cur.getColumnIndex("num"); int dataColumnIndex=cur.getColumnIndex("data"); int id=cur.getInt(idColumnIndex); int num=cur.getInt(numColumnIndex); String data=cur.getString(dataColumnIndex); System.out.println("id:"+id+";num:"+num+";data:"+data); }while(cur.moveToNext()); cur.close(); } } mSQLiteDatabase.close();//关闭数据库连接 }catch(Exception e){ e.printStackTrace(); } //deleteDatabase("testDatabase.db");//删除数据库 } });
更多相关文章
- 一款常用的 Squid 日志分析工具
- GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
- RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
- Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
- Android(安卓)armeabi的so库兼容问题
- 关于从Eclipse导入项目到android studio中R文件丢失,会自动导impo
- android添加底层核心服务
- Android(安卓)APK DEX分包总结
- android实现权限管理和签名静默卸载