简单写一个Android SQLite,便于后续理解
SqLite帮助类 用于操作数据库,创建MyDatabaseHelper 继承SQLiteOpenHelper 用于重写内部方法。
public class MyDatabaseHelper extends SQLiteOpenHelper {
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext=context;
}
举例创建Student表。添加id,name,number列
//创建表 name为列 text为文本
// 表名 Student
public static final String CREAT_Student="create table Student("
+"id integer primary key autoincrement,"
+"name text,"
+"number text)";
重写onCreate(),外部启动后调用onCreate(),用于建表“db.execSQL(CREAT_Student);”第一次进入会创建表,当检测到已存在此表,则不会重新创建。
@Override
public void onCreate(SQLiteDatabase db) {
// 建表
db.execSQL(CREAT_Student);
Toast.makeText(mContext,"Create succeeded", Toast.LENGTH_SHORT);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
类初始化数据库
// StudentStore.db 数据库名
public void initSql(Context context) {
LogUtils.d(TAG, "initSql");
databaseHelper = new MyDatabaseHelper(context, "StudentStore.db", null, 1);
}
创建或打开现有数据库(如果已经有就会打开名为"StudentStore数据库) 具有返回值,返回值可以操作数据库。
public void createSql() {
LogUtils.d(TAG, "createSql");
databaseHelper.getWritableDatabase();
}
插入数据方法
public void addDataSql() {
LogUtils.d(TAG, "addDataSql");
// 获取db对象用于操作数据库
SQLiteDatabase db = databaseHelper.getWritableDatabase();
// db.beginTransaction();
ContentValues values = new ContentValues();
values.put("name", "Zhangsan");
values.put("number", "20202002");
db.insert("Student", null, values);
// 插入第二条数据需要clear values
values.clear();
values.put("name", "Lisi");
values.put("number", "233782738723");
db.insert("Student", null, values);
// db.endTransaction();
}
查询数据,主要用过cursor查询
// 查询数据
public void queryDataSql() {
LogUtils.d(TAG, "queryDataSql");
SQLiteDatabase db = databaseHelper.getWritableDatabase();
// 调用query返回值为cursor cursor表示获取的全部结果
// table: 查询表名 相当于SQL---- from table_name
// columns: 查询列名 相当于SQL---- select column1 备注:参数为数组需要创建数组查询
// selection: 查询where约束条件 相当于SQL的where column =value
// selectionArgs :为占位符提供具体值 ?
// groupBy 指定需要group by的列 相当于SQL group by column
// having 对group by后的结果进行进一步的约束 having column =values
// orderBy 指定查询结果的排序方式 order by column1, column2
// String[] columns =new String[]{"name"};
Cursor cursor = db.query("Student"
// ,columns
// , "name ="+"'Zhangsan'"+" And number =?"
// , new String[]{"233"}
, null
, null
, null
, null
, null
, null);
if (cursor.moveToFirst()) {//将指针移动到第一行 之后一行取数据,从头开始获取数据
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
String number = cursor.getString(cursor.getColumnIndex("number"));
LogUtils.d(TAG, "queryDataSql name =" + name + " number =" + number);
LogUtils.d(TAG, "queryDataSql -----------------------------------");
} while (cursor.moveToNext());
}
// 用完一定要关闭
cursor.close();
}
更新列表数据
public void updateDataSql() {
LogUtils.d(TAG, "updateDataSql");
SQLiteDatabase db = databaseHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "WangLaoWu");
values.put("number", "20202002");
// values放到updaye中用于更新
db.update("Student", values, "name =?", new String[]{"Zhangsan"});
}
删除数据数据
public void deleteDataSql() {
LogUtils.d(TAG, "deleteDataSql");
SQLiteDatabase db = databaseHelper.getWritableDatabase();
db.delete("Student", "name =?", new String[]{"Zhangsan"});
}
上面为完整的简单SQLite使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46035626/article/details/129497864
————————————————
版权声明:本文为CSDN博主「啥也不是嘛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46035626/article/details/129497864