由于最近经常使用到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();