sqlite是android操作系统里面的一个轻量级数据库,可以用来存储我们的应用程序的相关信息,程序中通过继承SQLiteOpenHelper实现数据库功能。
DatabaseHelper.java
public class DatabaseHelper extends SQLiteOpenHelper {
//数据库的版本
private static int VERSION = 1;
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
public DatabaseHelper(Context context,String name,int version){
this(context, name, null, version);
}
public DatabaseHelper(Context context,String name, String sql){
this(context,name,VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建表的语句
String createSql = "create table MyTable"
+ " (id varchar(20), name varchar(20))";
db.execSQL(createSql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
个人习惯再加一层,把数据库的各种操作封装起来。
DatabaseOperation.javapublic class DatabaseOperation {
private Context mContext;
private DatabaseHelper databaseHelper;
private SQLiteDatabase db;
public DatabaseOperation(Context mContext) {
this.mContext = mContext;
}
// 打开数据库
public void open(String dbName) {
databaseHelper = new DatabaseHelper(mContext, dbName);
}
// 关闭数据库
public void close() {
if (db != null)
db.close();
if (databaseHelper != null)
databaseHelper.close();
}
// 插入数据
public void insert(String sql) {
// 添加插入时的其他操作
db = databaseHelper.getWritableDatabase();
db.execSQL(sql);
}
// 更新数据
public void update(String sql) {
// 添加更新时的其他操作
db = databaseHelper.getWritableDatabase();
db.execSQL(sql);
}
// 删除数据
public void delete(String sql) {
// 添加删除时的其他操作
db = databaseHelper.getWritableDatabase();
db.execSQL(sql);
}
// 查找数据
public Cursor find(String sql) {
db = databaseHelper.getWritableDatabase();
Cursor cursor = db.rawQuery(sql, null);
return cursor;
}
}
最后则是对自己建的表进行读写处理。
MyTable.java
public class MyTable {
private Context mContext;
private final String DATABASE_NAME = "MyDatabase";
private final String TABLE_NAME = "MyTable";
private String sql;
public HistoryDatabase(Context mContext) {
this.mContext = mContext;
}
// 读取表的信息
public void read() {
DatabaseOperation db = new DatabaseOperation(mContext);
db.open(DATABASE_NAME, sql);
sql = "select * from " + TABLE_NAME;
Cursor cursor = db.find(sql);
// 取出每一条元祖数据
while (cursor.moveToNext()) {
cursor.getString(cursor.getColumnIndex("id"));
cursor.getString(cursor.getColumnIndex("name"));
}
db.close();
}
// 将数据放入表中
public void write(int idValue, int nameValue) {
DatabaseOperation db = new DatabaseOperation(mContext);
db.open(DATABASE_NAME, sql);
// 插入数据库中
sql = "insert into " + TABLE_NAME;
sql += " " + "(id, name) values ";
sql += "('" + idValue + "',";
sql += " '" + nameValue + "')";
db.insert(sql);
db.close();
}
// 清空表
public void delete() {
DatabaseOperation db = new DatabaseOperation(mContext);
db.open(DATABASE_NAME, sql);
sql = "delete from " + TABLE_NAME;
db.delete(sql);
db.close();
}
}
以上都封装好了以后,只需要在需要调用数据库表的地方调用即可。
MainActivity.java
Mytable myTable = new MyTable(MainActivity.this);
myTable.read();
myTable.write("1", "zhangsan");
myTable.delete();
要添加其他表只需要依照MyTable.java新增一个文件,调用方法还是相同的。