做Android肯定要用到SQLite数据库,下面是SQLite的操作
首先是SQLite的操作类:DBHelper.java
public class DBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "name.db";
private static final String TBL_NAME = "Word";
private SQLiteDatabase db;
private Cursor cursor ;//游标
/**
* 初始化
* @param c
*/
DBHelper(Context c) {
super(c, DB_NAME, null, 2);//2是版本号
}
/**
* 第一次加载数据库时调用,如果是自己导进来的就不用这个了
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table Word(uid integer primary key autoincrement, uname varchar(20), uaddress varchar(20))");
}
/**
* 查询
* @param g
* @return cursor
*/
public Cursor query() {
db = getWritableDatabase();
cursor = db.rawQuery("select * from Word ",null);//用这个方法可以完成所有的,只要改下sql语句就行
return cursor;
}
//有条件的
public Cursor query(String id) {
db = getWritableDatabase();
cursor = db.rawQuery("select * from Word where uid=? ",new String[]{id});
return cursor;
}
/**
* 关闭
*/
public void close() {
if (db != null){
db.close();
}
}
然后在Activity中实例化调用就行
DBHelper dbHelper = new DBHelper(getApplication());
Cursor c = dbHelper.query(String.valueOf(1));
因为SQLite嵌入式的,所以我们打包apk的时候,要记得连数据库文件一起打包;
把SQLite数据库文件放到项目下assets中或者是res/raw,两种取值的方法有所不同;
raw:getBaseContext().getResources().openRawResource(R.raw.name);
assets:getBaseContext().getAssets().open(name.db);
下面是具体的操作:
String DB_PATH = "/data/data/com.test.demo/databases/";//com.test.demo是你项目所在的包
String DB_NAME = "name.db";//文件名
// 检查 SQLite 数据库文件是否存在
if ((new File(DB_PATH + DB_NAME)).exists() == false) {
// 如 SQLite 数据库文件不存在,再检查一下 database 目录是否存在
File f = new File(DB_PATH);
// 如 database 目录不存在,新建该目录
if (!f.exists()) {
f.mkdir();
}
try {
InputStream is = getBaseContext().getResources()
.openRawResource(R.raw.english);
// 输出流
FileOutputStream os = new FileOutputStream(DB_PATH+ DB_NAME);
int length = is.available();
// 文件写入
byte[] buffer = new byte[length];
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
// 关闭文件流
os.flush();
os.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
注意:有些系统如2.2的话,如果文件.db大于1M的话,会报错:Data exceeds UNCOMPRESS_DATA_MAX (1622016 vs 1048576) ;因为assetsManager 无法处理大于1M的文件的压缩和解压。只要把我们文件的后缀名改成:".jpg", ".jpeg", ".png", ".gif",
".wav", ".mp2", ".mp3", ".ogg", ".aac",
".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",
".rtttl", ".imy", ".xmf", ".mp4", ".m4a",
".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",
".amr", ".awb", ".wma", ".wmv" 这些都可以,,,代码还是像上面一样就行