安卓Day09
SQLiteOpenHelper 数据库的帮助类 --> 代码实现步骤
定义一个类 继承SQLiteOpenHelper
重写构造方法 :提供数据库的基本信息 : 上下文对象,数据库名称,Null,数据库的版本号
重写父类的方法onCreate() 和onUpgrade()
Java代码
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLite extends SQLiteOpenHelper {
private Context context;
private String name;
private SQLiteDatabase.CursorFactory factory;
private int version;
/***
*
* @param context 上下文
* @param name 数据库名
* @param factory
* @param version 版本号
*/
public MySQLite(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
this.context = context;
this.name = name;
this.factory = factory;
this.version = version;
}
//当传进来的数据库名没找到时 创建该数据库 并执行该方法
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//随便创建一张表
String sql = "create table user(_id integer primary key autoincrement,Name varchar(20),Age integer)";
sqLiteDatabase.execSQL(sql);
}
//更新版本时执行
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
封装好的方法
private long addData(){
MySQLite kangxiaobo = new MySQLite(this, “kangxiaobo”, null, 1);
//获得数据库的操作类
SQLiteDatabase database = kangxiaobo.getWritableDatabase();
//数据库的数据格式
ContentValues values = new ContentValues();
//添加数据
values.put(“Name”,“康小博”);
values.put(“Age”,“22”);
/***
* @param table 表名
* @param values 数据
* @return 该表中数据的数量
* insert() 插入数据
* update() 修改数据
* delete() 删除数据
* query() 查询数据
*/
return database.insert(“user”, null, values);
}
执行SQL语句
private void addData() {
MySQLite kangxiaobo = new MySQLite(this, “kangxiaobo”, null, 1);
//获得数据库的操作类
SQLiteDatabase database = kangxiaobo.getWritableDatabase();
database.execSQL(“insert into user values(null,‘康小博’,22)”);
}
query()查找
private void queryData() {
MySQLite kangxiaobo = new MySQLite(this, “kangxiaobo”, null, 1);
//获得数据库的操作类
SQLiteDatabase database = kangxiaobo.getWritableDatabase();
/***
* 执行SQL语句
* @param table 要查询的表名
* @param columns 需要查询的字段
* @param selection 查询的条件
* @param selectionArgs 查询条件对应的内容
* @param groupBy 分组
* @param having 分组的过滤条件
* @param orderBy 排序
* @param limit 查询显示的条数
* @return 游标
*/
Cursor query = database.query(“user”, null, null, null, null, null, null);
//循环获取查询的值
while (query.moveToNext()){
query.getColumnIndex("_id");
String name = query.getString(query.getColumnIndex(“Name”));
int age = query.getInt(query.getColumnIndex(“Age”));
text.setText(text.getText()+"\n"+name+age);
}
}
rawQuery()查找
private void rawQuery(){
MySQLite kangxiaobo = new MySQLite(this, “kangxiaobo”, null, 1);
//获得数据库的操作类
SQLiteDatabase database = kangxiaobo.getWritableDatabase();
String sql = “select * from user where name=?”;
/***
* @param sql sql语句
* @selectionArgs sql中?对应的参数对应的参数
* @return 游标
*/
Cursor cursor = database.rawQuery(sql, new String[]{“康小博”});
while (cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex(“Name”));
int age = cursor.getInt(cursor.getColumnIndex(“Age”));
}
}
作者:康小博
链接:https://www.jianshu.com/p/03212b1eb6ef
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。