忙碌了一天,总算摸清了里面的套路与步骤,现总结如下: 首先我们要知道,安卓是无法直接操作项目某个文件夹下的SQLite数据库的,因此我们首先得把数据库移到移动设备上/data/data/你的包名/databases文件夹下,安卓自己创建的数据库也是放在这个地方。 第一步,检查你项目res目录下是否有raw文件夹,没有的话就自己新建一个,如下所示: 这里有个值得注意的地方,就是db文件命名的时候要写成英文,否则使用R.raw.db_name时会找不到该文件,我也不知道怎么回事。。。 这样就将single18.db移到了/data/data/packagename/databases下,这里要注意,由于是在真机调试的情况下完成该操作的,事后可能你在目标文件夹下是找不到db文件的,得先停止调试,然后重新调试,进入Device File Exploer才能看见新导入的db文件。本人操作时就遇到了这种情况,我一直以为没有移动成功,一直调试。。白白浪费了时间。这里之所以说可能找不到,是因为可能我的代码有点问题。 最后,就可以用SQLiteOpenHelper等专用类对该数据库文件进行操作了,不再赘述。
第二步, 将想要移动的数据库放进raw目录下,如下:第三步,将数据库移动到目标文件夹下,代码如下:
package com.example.edm; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.os.Environment; import android.util.Log; public class MyDatabaseHelper { private final int BUFFER_SIZE = 500000; public static final String DB_NAME = "single18.db"; //保存的数据库文件名 public static final String PACKAGE_NAME = "com.example.edm";//包名 public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME + "/databases"; //存放数据库的位置 String dbfile=DB_PATH+"/"+DB_NAME; private SQLiteDatabase database; private Context context; public MyDatabaseHelper(Context context){ this.context = context; } public void openDatabase() { File dFile=new File(DB_PATH);//判断路径是否存在,不存在则创建路径 if (!dFile.exists()) { dFile.mkdir(); } this.database = this.openDatabase(DB_PATH + "/" + DB_NAME); } private SQLiteDatabase openDatabase(String dbfile) { try { if (!(new File(dbfile).exists())) { InputStream is = this.context.getResources().openRawResource( R.raw.single18); //想要导入的数据库在这里 FileOutputStream fos = new FileOutputStream(dbfile); byte[] buffer = new byte[BUFFER_SIZE]; int count = 0; while ((count = is.read(buffer)) > 0) { fos.write(buffer, 0, count); } fos.close(); is.close(); } SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); return db; }catch (FileNotFoundException e) { Log.e("Database", "File not found"); e.printStackTrace(); } catch (IOException e) { Log.e("Database", "IO exception"); e.printStackTrace(); } return null; } public void closeDatabase() { this.database.close(); } }
调用:myDatabaseHelper=new MyDatabaseHelper(SingleSubjectActivity.this); myDatabaseHelper.openDatabase(); myDatabaseHelper.closeDatabase();
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算