Android系列之SQLite与Android Studio的数据交互

一、把db放在res的下方创一个raw文件夹,里面用来放db

二、创一个DbHelper类,实际代码如下:

public class DbHelper extends SQLiteOpenHelper{  
        /** 
         * 
         * @param context 上下文 
         * @param name 数据库的名字 
         * @param factory 数据库工厂,null 
         * @param version  数据库的版本 
         */  
        public DbHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {  
            super(context, name, factory, version);  
        }  

        @Override  
        public void onCreate(SQLiteDatabase db) {  
        }  

        @Override  
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
        }  
    }  
三、然后再相同的目录下创一个DbManager类,就可以了

public class DbManager {  
    public static final String DB_NAME = "wenwen.db"; //数据库名字  
    public static final String PACKAGE_NAME ="com.zking.laci.android_project";//包名  
    public static final String DB_PATH = "/data" + Environment.getDataDirectory().getAbsolutePath() + "/" + PACKAGE_NAME;   //数据库的绝对路径( /data/data/com.*.*(package name))  
    private SQLiteDatabase db;  
    private Context context;  
  
    public DbManager(Context context) {  
        this.context = context;  
    }  
  
    //对外提供的打开数据库接口  
    public void openDataBase() {  
        this.db = this.openDataBase(DB_PATH + "/databases");  
    }  
  
    //获取打开后的数据库  
    public SQLiteDatabase getDb() {  
        return this.db;  
    }  
  
    // 本地打开数据方法  
    private SQLiteDatabase openDataBase(String filePath) {  
        try {  
            File file = new File(filePath);  
            if (!file.exists()) { //判断文件是否存在  
                //通过输入流和输出流,把数据库拷贝到"filePath"下  
                file.mkdir();  
                File file2=new File(filePath+"/"+DB_NAME);  
                if (!file2.exists()) {  
                    InputStream is = context.getResources().openRawResource(R.raw.wenwen);//获取输入流,使用R.raw.test资源  
                    FileOutputStream fos = new FileOutputStream(file2);  
                    byte[] buffer = new byte[1024];  
                    int readCount;  
                    while ((readCount = is.read(buffer)) > 0) {  
                        fos.write(buffer, 0, readCount);  
                    }  
                    fos.close();  
                    is.close();  
                }  
            }  
//打开数据库  
            SQLiteDatabase db =new DbHelper(context,"wenwen.db",null,2).getWritableDatabase();  
            return db;  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return null;  
    }  
  
    //关闭数据库  
    public  void closeDataBase()  
    {  
        if(this.db!=null)  
            db.close();  
    }  
}  
四、最后在你第一个开始运行的activity中,写下以下代码就完成交互了(调用)

DbManager dbManager=new DbManager(getApplicationContext());  
       dbManager.openDataBase();  




你可能感兴趣的:(Android系列之SQLite与Android Studio的数据交互)