android中引用项目工程中的sqlite文件(转)
采用将项目中的sqlite文件拷到android内存卡上的固定位置,先判断位置上是否存在sqlite文件,不存在则复制文件。
sqlite可放在res的raw目录下,亦可放在assets下,放在assets下,可新建其他层次目录,本例选择assets
Sqlite文件testDatabase.db在工程的assets下db下,复制到sdcard中testdb下
数据库中有表test1,列idint,numint,datastring
首先,添加sdcard权限在AndroidManifest.xml
<uses-permissionandroid: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");//删除数据库 } });
相关推荐
DAV数据库 2020-06-17
airfling 2020-05-31
zbcaicai 2020-05-26
beibeijia 2020-04-25
Rain 2020-04-16
Plant 2020-04-08
园搬家测试账号 2020-03-25
MFCJCK 2020-02-24
xiaoxiangyu 2020-02-23
Plant 2020-02-03
CharlesYooSky 2020-02-01
MFCJCK 2020-01-31
nxcjh 2020-01-29
wintershii 2020-01-18
zbcaicai 2020-01-03
MFCJCK 2019-12-30
airfling 2019-12-28
Plant 2019-12-27
Dlanguage 2019-12-27
Dlanguage 2019-12-25
whyname 2019-12-23