采用将项目中的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中有如下代码
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");//删除数据库         }      });

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android(安卓)armeabi的so库兼容问题
  6. 关于从Eclipse导入项目到android studio中R文件丢失,会自动导impo
  7. android添加底层核心服务
  8. Android(安卓)APK DEX分包总结
  9. android实现权限管理和签名静默卸载

随机推荐

  1. System.EntryPointNotFoundException: Un
  2. Android使用Cordova框架开发Android Hybr
  3. Android(安卓)-- 点击双下返回退出程序
  4. android资源引用
  5. 【Android UI】ListView系列一(基础篇)
  6. 谷安: Google 44 号楼“变脸”!
  7. 有关Android国际化的一点积累
  8. Android Studio中导入现有Eclipse项目(多
  9. android app签名(debug和release)
  10. Android高级应用2----ContentProvider(访