android 学习笔记——SQLiteOpenHelper类的简单使用
本文记录SQLiteOpenHelper类的简单使用,函数说明都加在注释里,如有错误的地方请及时指正。ContentValues类似于map,相对于map,它提供了存取数据对应的put(String key,xxx Value)和getAsXxx(String key)方法,key为字段名称,value为字段值,Xxx指的是各种常用的数据类型,如:String、integet等。
·
前言
本文记录SQLiteOpenHelper类的简单使用,函数说明都加在注释里,如有错误的地方请及时指正。
提示:以下是本篇文章正文内容,下面案例可供参考
一、SQLiteOpenHelper是什么?
SQLiteOpenHelper是android系统提供的用于创建及操作数据库的工具类。该类中提供了创建、升级、降级时的回调方法,对应onCreate(),onUpgrade(),onDowngrade()。在使用时可以根据app功能进行覆写相应的方法,从而实现正确的存储数据。
二、代码示例
代码如下(示例):
public class SQLiteHelper extends SQLiteOpenHelper {
private SQLiteDatabase sqLiteDatabase;
//调用父类 SQLiteOpenHelper 的构造函数
public SQLiteHelper(Context context) {
//上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 Null),一个代表你正在使用的数据库模型版本的整数。
super(context, DBUtils.DATABASE_NAME, null, DBUtils.DATABASE_VERSION);
sqLiteDatabase = this.getWritableDatabase();
}
//创建数据库
@Override
public void onCreate(SQLiteDatabase db) {
//execSQL() 方法适用于所有不返回结果的 SQL 语句
db.execSQL("CREATE TABLE " + DBUtils.DATABASE_TABLE + "(" + DBUtils.NOTE_ID +
" INTEGER PRIMARY KEY AUTOINCREMENT," + DBUtils.NOTE_CONTENT +
" TEXT," + DBUtils.NOTE_TIME + " TEXT)");
}
//把一个数据库从旧的模型转变到新的模型。
//它需要三个参数,一个 SQLiteDatabase 对象,一个旧的版本号和一个新的版本号
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
//添加数据
public boolean insertData(String userContent, String userTime) {
//ContentValues 储存数据,只能存储基本类型的数据,不能存储对象
ContentValues values = new ContentValues();
values.put(DBUtils.NOTE_CONTENT, userContent);
values.put(DBUtils.NOTE_TIME, userTime);
//插入数据
//第一个参数是表的名称
//第二个参数为空值字段,就是如果第三个参数为空(null)的时候就会用到第二个参数的值。用第二个参数代替第三个参数组拼成SQL语句
//比如:insert into person(name) values(null) 这里的person字段使用了第二个参数的name
//第三个参数不为空就不会用到第二个参数
return sqLiteDatabase.insert(DBUtils.DATABASE_TABLE, null, values) > 0;
}
//删除数据
public boolean deleteData(String id) {
String sql = DBUtils.NOTE_ID + "=?";
String[] contentValuesArrary = new String[]{String.valueOf(id)};
//1表名、2字段名、3占位符的数据
return sqLiteDatabase.delete(DBUtils.DATABASE_TABLE, sql, contentValuesArrary) > 0;
}
//修改数据
public boolean updateData(String id, String content, String userYear) {
ContentValues contentValues = new ContentValues();
contentValues.put(DBUtils.NOTE_CONTENT, content);
contentValues.put(DBUtils.NOTE_TIME, userYear);
String sql = DBUtils.NOTE_ID + "=?";
String[] strings = new String[]{id};
//1表名、2需要更新值、3以什么条件字段更新、4条件字段的数据值(占位符的值)
return sqLiteDatabase.update(DBUtils.DATABASE_TABLE, contentValues, sql, strings) > 0;
}
//查询数据
public List<NotepadBean> qurry() {
List<NotepadBean> list = new ArrayList<NotepadBean>();
//1 表名、 2 需要查询的字段列表,用字符串数组形式传入,null为所有的字段、 3 以什么条件字段查询、 4 条件字段的数据值(占位符的值)、
// 5 groupBy相当于select语句的groupby后面的部分、 6 having相当于select语句的having后面的部分、 7 order是我们想要的排序方式。
Cursor cursor = sqLiteDatabase.query(DBUtils.DATABASE_TABLE, null, null, null,
null, null, DBUtils.NOTE_ID + " desc");
if (cursor != null) {
while (cursor.moveToNext()) {
NotepadBean noteInfo = new NotepadBean();
String id = String.valueOf(cursor.getInt
(cursor.getColumnIndex(DBUtils.NOTE_ID)));
String content = cursor.getString(cursor.getColumnIndex
(DBUtils.NOTE_CONTENT));
String time = cursor.getString(cursor.getColumnIndex(DBUtils.NOTE_TIME));
noteInfo.setId(id);
noteInfo.setNotepadContent(content);
noteInfo.setNotepadTime(time);
list.add(noteInfo);
}
cursor.close();
}
return list;
}
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了SQLiteOpenHelper的使用,而SQLiteOpenHelper提供了大量能使我们快速便捷地处理数据的函数和方法。
更多推荐
已为社区贡献3条内容
所有评论(0)