SQLite是一个开源的嵌入式数据库,由于其轻量级,所以在很多场合下它成为了一个不错的选择,特别在Android开发中它可以说是数据存储的首选。
创建数据库并且创建表
在Android中要对SQLite数据库进行操作首先要创建数据库和创建表。这些工作都放在SQLiteOpenHelper的子类中进行。
class MyDatabaseHelper extends SQLiteOpenHelper {
public static final String CREATE_BOOK = "create table Book ("
+ "id integer primary key autoincrement, "
+ "author text, "
+ "price real, "
+ "pages integer, "
+ "name text, "
+ "category_id integer)";
private Context mContext;
MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
在上面的代码中,首先定义了一个常量CREATE_BOOK ,这个常量里面装的是一条建表语句,然后在MyDatabaseHelper的构造方法中通过super调用父类SQLiteOpenHelper的构造方法,这里传入了四个参数,分别是Context对象,数据库名,用于创建Cursor对象,数据库版本号。若不存在指定名称的数据库则新建数据库,若已经存在则打开该数据库。
然后是重写的onCreate()和onUpgrade()方法,这两个方法是从SQLiteOpenHelper中继承下来的,都必须重写。在onCreate()方法中通过execSQL()执行建表语句。
打开和关闭数据库
要对数据库进行什么增删查改的操作首先得打开数据库,完成操作后记得将数据库关闭。
在Service或Activity的onCreate()方法中调用
MyDatabaseHelper dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);
这时数据库并未打开,只有调用了getWritableDatabase()或getReadableDatabase()才算是正式打开数据库。
SQLiteDatabase db = dbHelper.getWritableDatabase();
getWritableDatabase()和getReadableDatabase()这两个方法都可以打开数据库,不同的是当数据库不可写入的时候(如数据库满了),前者会出异常,后者则打开数据库成功但是只能进行读取数据操作。
操作完成后其实不关闭数据库也不会有什么问题,但是为了良好的习惯,在使用完后还是调用下面的方法将其关闭。
db.close();
对数据库进行增删查改操作
打开数据库后,就可以对数据库进行操作了,增删查改都可以。
//插入数据
db.execSQL("insert into Book (name, author, pages, price) values(?, ?, ?, ?)",
new String[] {"The Da Vinci Code", "Dan Brown", "454", "16.96"});
注意这里的占位符与刚刚不一样,用的是问号”?”。
//更新数据
db.execSQL("update Book set price = ? where name = ?", new String[] {"10.99", "The Da Vinci Code"});
//删除数据
db.execSQL("delete from Book where pages > ?", new String[] {"500"});
//查询数据
db.rawQuery("select * from Book", null);
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/170830.html