Android菜鸟笔记-SQLite数据库和APK一起发布

     由于最近经常使用到SQLite,在借鉴了网上前辈高人的资料后,整理了一份DBManager的类,以供收藏。

     简要步骤:

     1.通过第三方工具创建好数据库文件(SQLite Developer,还不错)

     2.复制数据库文件xxx.db到工程assets目录下

     3.由于assets目录下的文件不能直接进行读写操作,所以在程序运行的时候要把数据库从assets目录下拷贝到SD卡或者package相关目录下,然后才能进行数据库的操作


package com.xxx.xx;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

public class DBManager {
	SQLiteDatabase database;
	Context context;
	String DB_PATH="/data/data/com.xxx.xx/databases/";
        //com.xxx.xx为程序的包名
	String DB_NAME="xxx.db";
	
	public DBManager(Context context)
	{
	   this.context = context;
	}
	
	public SQLiteDatabase openDatabase()
	{
		if(!new File(DB_PATH+DB_NAME).exists())
		{
			File f = new File(DB_PATH);
			if (!f.exists()) 
			{
                          f.mkdir();
                        }
		try 
		 {
                  InputStream is = context.getAssets().open(DB_NAME);
                  OutputStream os = new FileOutputStream(DB_PATH + DB_NAME);
                  byte[] buffer = new byte[1024];
                  int length;
                 while ((length = is.read(buffer)) > 0) 
                 {
                   os.write(buffer, 0, length);
                 }
                 os.flush();
                 os.close();
                 is.close();
                 } 
	        catch (Exception e) 
                {
                  e.printStackTrace();
                }
	    	  database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null);
		}
	     else
	       {
		   database = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, null);
		}
		return database;
	}
	
	public void close()
	{
	   if(database != null)
	   {
	     this.database.close();
	   }
	}

}


    4.使用DBManager(仅查询语句)

DBManager dbm=new DBManager(this);
SQLiteDatabase db = dbm.openDatabase();
Cursor cur =  db.rawQuery(sql, null);//sql=SQL语句,String型
while (cur.moveToNext())
 {
   //处理执行语句后返回的数据
 }
cur.close();
db.close();







你可能感兴趣的:(Android菜鸟笔记-SQLite数据库和APK一起发布)