1.当我们想要对Android中数据库进行相应的操作时就会遇到SQLite,http://www.sqlite.org
它是一个非常小的数据库,小到了存储空间可以忽略不计,但是同时又提供了比较完整的关系型数据库的功能。
2.使用时,是通过建立一个类继承SQLiteOpenHelper,作为访问SQLite的助手类,可以通过getWritableDatabase()或者 geReadableDatabase()方法获得SQLite的对象。
实现如下:
public class DbOpenHelper extends SQLiteOpenHelper {
public DbOpenHelper(Context context) { // 该构造方法必须有,参数第二个是数据库名
super(context, DbUtil.DB_NAME, null, DbUtil.VERSION);
}
public void onCreate(SQLiteDatabase db) {
StringBuffer createTableSql = new StringBuffer();
createTableSql.append("create table " + DbUtil.TABLE_NAME
+ "( id Integer primary key autoincrement,")
.append("name text,").append("content text,")
.append("time text,").append("dijishu Integer )");
db.execSQL(createTableSql.toString());
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists " + DbUtil.TABLE_NAME);
onCreate(db);
}
}
3.在其他类中使用SQLite对象时,通过getWritableDatabase(),方法得到,对
public class JokeService {
private DbOpenHelper dbOpenHelper;
private SQLiteDatabase db;
private static String table_name = DbUtil.TABLE_NAME;
public static JokeService getInstance(Context context) {
return new JokeService(context);
}
public JokeService(Context context) {
dbOpenHelper = new DbOpenHelper(context);
}
public long save(Joke joke) {
db = dbOpenHelper.getWritableDatabase(); // 得到SQLiteDatabase对象
ContentValues values = new ContentValues();
values.put("name", joke.getName());
values.put("content", joke.getContent());
values.put("time", joke.getTime());
values.put("dijishu", joke.getDijishu());
return db.insert(table_name, "name", values); // 实现对对象的插入,也可以其他的删除、更新,这些操作必须是针对对象的,也就是通过getWritableDatabase();得到的
}