android SQLite数据库 笔记
android原生api开发
步骤:
1. 帮助类;
2. 操作数据库;
代码:
1. 创建数据库帮助类 继承系统的SQLiteOpenHelper
/**
* 数据库帮助类
*/
public class MyDBopenHelper extends SQLiteOpenHelper {
/**
* 构造方法
* @param context 上下文
* @param name 数据库的名字
* @param factory 游标工厂,null
* @param version 数据库的版本号
*/
public MyDBopenHelper(Context context) {
super(context, "geaosu.db",null,1);
}
/**
* 第一次创建数据库的时候调用, 适合初始化数据库的表
*/
@Override
public void onCreate(SQLiteDatabase db) {
System.out.println("数据库创建了");
db.execSQL("create table gg( _id integer primary key autoincrement,name varchar(20),num varchar(20))");
}
/**
* 数据库升级的时候调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2. 操作数据库
* 增
/**
* 添加数据
*/
public void insert(){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getWritableDatabase();
//db.execSQL("insert into gg ('name','num') values (?,?)",new Object[]{"xiaoshenyang","001"});
/*
* table :表名
* nullColumnHack :null
* ContentValues :用HashMap存储数据
*/
ContentValues values = new ContentValues();
values.put("name", "songxiaobao");
values.put("num", "12");
long id = db.insert("gg", null, values);
if (id == -1) {
Toast.makeText(this, "操作表失败了", 0).show();
}else {
Toast.makeText(this, "操作表成功:"+id, 0).show();
}
db.close(); //释放资源
}
* 删
/**
* 删除数据
*/
public void delete(View v){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getWritableDatabase();
//db.execSQL("delete from gg");
int id = db.delete("gg", null, null);
if (id == 0) {
Toast.makeText(this, "操作表失败了", 0).show();
}else {
Toast.makeText(this, "操作表成功:"+id, 0).show();
}
db.close(); //释放资源
}
* 改
/**
* 修改数据
*/
public void update(View c){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getWritableDatabase();
//db.execSQL("update gg set name=?",new String[]{"yadan"});
/*
* table :表名、
* values :要修改的列
* whereClause :修改条件
* whereArgs :修改条件里的占位符
*/
ContentValues values = new ContentValues();
values.put("name", "cuihua");
int id = db.update("gg", values, null, null);
if (id == 0) {
Toast.makeText(this, "操作表失败了", 0).show();
}else {
Toast.makeText(this, "操作表成功:"+id, 0).show();
}
db.close(); //释放资源
}
* 查
/**
* 查找数据
*/
public void query(View view){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getReadableDatabase();
/*
* distinct :去重
* table :表名
* columns :要查询的列
* selection :查询条件
* selectionArgs :查询条件的占位符
* groupBy :分组
* having :分组后的条件限定
* orderBy :排序
* limit :分页
*/
Cursor cursor = db.query("gg", new String[]{"num","name"}, null, null, null, null, null, null);
//Cursor cursor = db.rawQuery("select * from gg", null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(1);
String num = cursor.getString(0);
System.out.println("name:"+name+" num:"+num);
}
cursor.close(); //关闭cursor
db.close(); //释放资源
}
java原生api开发
步骤:
1. 帮助类;
2. 操作数据库
代码:
1. 帮助类;
/**
* 数据库帮助类
*/
public class MyDBopenHelper extends SQLiteOpenHelper {
/**
* 构造方法
* @param context 上下文
* @param name 数据库的名字
* @param factory 游标工厂,null
* @param version 数据库的版本号 (只能生不能降级, >=1的正整数)
*/
public MyDBopenHelper(Context context) {
super(context, "geaosu.db", null, 1);
}
/**
* 第一次创建数据库的时候调用; 适合初始化数据库的表, version 增长的时候调用
*/
@Override
public void onCreate(SQLiteDatabase db) {
Log.e("geaosu", "数据库创建了");
db.execSQL("create table gg( _id integer primary key autoincrement ,name varchar(20),num varchar(20))");
}
/**
* 升级数据库的时候调用
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.e("geaosu", "数据库升级了");
}
}
2. 操作数据库
/**
* 给数据库添加数据
*/
public void insert(){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("insert into gg ('name','num') values (?,?)",new Object[]{"xiaoshenyang","001"});
db.close();//释放资源
}
/**
* 删除
*/
public void delete(){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("delete from gg");
db.close(); //释放资源
}
/**
* 修改
*/
public void update(){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getWritableDatabase();
db.execSQL("update gg set name=?",new String[]{"yadan"});
db.close(); //释放资源
}
/**
* 查找
*/
public void query(){
//1.在内存中创建数据库帮助类的对象
MyDBopenHelper helper = new MyDBopenHelper(this);
//2.生成数据库文件
SQLiteDatabase db = helper.getWritableDatabase();
/*
* distinct :去重
* table :表名
* columns :要查询的列
* selection :查询条件
* selectionArgs :查询条件的占位符
* groupBy :分组
* having :分组后的条件限定
* orderBy :排序
* limit :分页
*/
Cursor cursor = db.query("gg", new String[]{"name", "num"}, null, null, null, null, null, null);
while (cursor.moveToNext()) {
String name = cursor.getString(0);
String num = cursor.getString(1);
System.out.println("name:"+name+" num:"+num);
}
cursor.close(); //关闭cursor
db.close(); //释放资源
}