import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
private static final String name="my";//数据库名
private static final int version=1;//版本号
//重写构造方法的时候选择参数少的一项
public DBHelper(Context context) {
//1:上下文 2:数据库名称 3:游标创建工厂 4:数据库版本 版本只能是整数 1 2 3..
super(context, name, null, version);
}
//数据库的初始化 SQLiteDatabase数据库操作对象
//一般只在第一次运行和版本更新的时候调用
@Override
public void onCreate(SQLiteDatabase db) {
//创建数据库 主键默认自增
db.execSQL("create table student(" +
"_id integer not null primary key autoincrement," +
"name varchar(20)," +
"phone varchar(11)," +
"gender varchar(2))");
//添加一条测试数据
db.execSQL("insert into student values(null,?,?,?)"
,new Object[]{"小黑","12345678901","男"});
}
/**
* 在版本升级的时候调用
* 修改version 为2 表示版本升级 就会调用这个方法
* @param db 数据库操作对象
* @param oldVersion 旧版本号
* @param newVersion 新版本号
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
//创建数据 DBHelper helper =new DBHelper(this); //调用数据操作对象 SQLiteDatabase dbWrite=helper.getWritableDatabase(); SQLiteDatabase dbRead=helper.getReadableDatabase();
try {
db.beginTransaction();//开启事务
// db.update();
// db.insert();
db.setTransactionSuccessful(); //没有设置事物成功 finally就会回滚
} catch (Exception e) {
e.printStackTrace();
}finally {
db.endTransaction();
}
private void query() {
StringBuffer sb=new StringBuffer("select * from student where 1=1");
//参数集合
List<String> params=new ArrayList<>();
if(!TextUtils.isEmpty(id)){
sb.append(" and _id=?");
params.add(id);
}
if(!TextUtils.isEmpty(phone)){
sb.append(" and phone=?");
params.add(phone);
}
if(!TextUtils.isEmpty(name)){
sb.append(" and name=?");
params.add(name);
}
if(!TextUtils.isEmpty(gender)){
sb.append(" and gender=?");
params.add(gender);
}
SQLiteDatabase db=helper.getReadableDatabase();
String [] projection=new String [params.size()];
params.toArray(projection);
//返回值 游标
Cursor cursor=db.rawQuery(sb.toString(),projection);
//判断游标是否为空,是否有一个值
while(cursor!=null&&cursor.moveToNext()){
// getColumnIndex获取列的下标 cursor.getXXXX()获取指定列的值
String name=cursor.getString(cursor.getColumnIndex("name"));
Integer id=cursor.getInt(cursor.getColumnIndex("_id"));
}
}
private void update() {
StringBuffer sb=new StringBuffer("update student set ");
List params=new ArrayList();
if(!TextUtils.isEmpty(phone)){
sb.append("phone=?,");
params.add(phone);
}
if(!TextUtils.isEmpty(name)){
sb.append("name=?,");
params.add(name);
}
if(!TextUtils.isEmpty(gender)){
sb.append("gender=?,");
params.add(gender);
}
if (params.size()!=0){
//更新操作拼接字符串末尾有一个","需要去除
//删除最后一位的“,”
sb.setLength(sb.length()-1);
sb.append(" where 1=1");
//通过id指定 更新那行数据
if(!TextUtils.isEmpty(id)){
sb.append(" and _id=?");
params.add(id);
}else{
Toast.makeText(this,"请填写id",Toast.LENGTH_SHORT).show();
return;
}
SQLiteDatabase db=helper.getWritableDatabase();
Object [] o=new Object[params.size()];
params.toArray(o);//将数据存放到指定的数组中
db.execSQL(sb.toString(),o);
}
}
ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("name","123");//添加要更改的字段及内容
String whereClause = "phone=?";//修改条件
String[] whereArgs = {"12312313213"};//修改条件的参数
db.update("student",cv,whereClause,whereArgs);//执行修改
private void delete() {
getAllText();
//拼接sql语句
StringBuffer sb=new StringBuffer("delete from student where 1=1");
//保存参数的list
List params=new ArrayList();
//判断条件 动态拼接
if(!TextUtils.isEmpty(id)){
sb.append(" and _id=?");
params.add(id);
}
if(!TextUtils.isEmpty(phone)){
sb.append(" and phone=?");
params.add(phone);
}
if(!TextUtils.isEmpty(name)){
sb.append(" and name=?");
params.add(name);
}
if(!TextUtils.isEmpty(gender)){
sb.append(" and gender=?");
params.add(gender);
}
SQLiteDatabase db=helper.getWritableDatabase();
if (params.size()!=0){
Object [] o=new Object[params.size()];
params.toArray(o);//将数据存放到指定的数组中
//执行删除
db.execSQL(sb.toString(),o);
}else{
db.execSQL(sb.toString());
}
Toast.makeText(this,"删除完成",Toast.LENGTH_SHORT).show();
}
String whereClause = "name=?";//删除的条件
String[] whereArgs = {"123"};//删除的条件参数
db.delete("student",whereClause,whereArgs);//执行删除
private void insert() {//保存数据到object数组
Object [] o=new Object[]{name,phone,gender};
//获取数据库操作对象
SQLiteDatabase db=helper.getWritableDatabase();
//sql:sql语句 bingArgs:参数数组
db.execSQL("insert into student values(null,?,?,?)",o);
//关闭连接
db.close();
Toast.makeText(this,"增加成功",Toast.LENGTH_SHORT).show();
}
ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据
cv.put("name","123");
db.insert("student",null,cv);//执行插入操作
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有