SQL数据库的基本操作:

本文介绍了如何在Android中使用SQLite数据库进行基本操作,包括新建SQLiteOpenHelper子类,实现增、改、删、查的方法。在MainActivity中通过实现View.OnClickListener接口进行交互。详细讲解了菜鸟版和正常版的操作方式,以及如何处理事务,确保数据一致性。在事务处理中,如果出现错误,整个事务将被回滚,防止数据损坏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建一个类,继承SQLiteOpenHelper。

public class MydataBaseHelp extends SQLiteOpenHelper

写一个构造函数

    private Context context;//上下文对象
    String name;//数据库名称
    SQLiteDatabase.CursorFactory factory;//工产
    int version;//数据库的版本号(用于判断)
    public MydateBaseHelp(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;
    }

重写两个方法:

//执行一次  没有时创建 有则打开  有变动则更新 调用onUpgrade方法
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表  添加属性
        String sql = "create table user(_id integer primary key autoincrement,Name varchar(20),Age integer)";
        //执行增删改
        db.execSQL(sql);
    }

    //更新数据
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //增加数据
        String sql = "alter table user add sex char(4)";
        //执行
        db.execSQL(sql);
    }

在MainActivity中的操作:
首先 MainActivity 实现一个接口 View.OnClickListener

public class MainActivity extends AppCompatActivity implements View.OnClickListener

增:

1.菜鸟版

                //实例化 创建数据库
                MydataBaseHelp dbOpenHelper=new MydataBaseHelp(MainActivity.this,"day9",null,1);
                //获取数据库的操作类
                SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
                //数据格式
                ContentValues values = new ContentValues();
                values.put("Name","红孩儿");
                values.put("Age","1800");
                //参数一表名 参数二:默认值  参数三:要插入的值
                text.setText(db.insert("user",null,values)+"");

2.正常版

                //实例化 创建数据库
                MydataBaseHelp dbOpenHelper=new MydataBaseHelp(MainActivity.this,"day9",null,1);
                //获取数据库的操作类
                SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
                //插入数据
                db .execSQL("insert into User(Name,sex,Age) values('风清扬','男',108)");

改:
1.菜鸟版:

                MydataBaseHelp dbOpenHelper6=new MydataBaseHelp(MainActivity.this,"day9",null,2);
                SQLiteDatabase db6 = dbOpenHelper6.getWritableDatabase();
                //参数一:表名  参数二:要修改的值  参数三:条件 参数四:为条件中的?赋值
                int  num2=db6.delete("User","name=?",new String[]{"红孩儿"});
                text.setText("删除"+num2+"");

2.正常版:

                MydataBaseHelp dbOpenHelper7=new MydataBaseHelp(MainActivity.this,"day9",null,2);
                SQLiteDatabase db7 = dbOpenHelper7.getWritableDatabase();
                String sql="delete from User where name = ? ";
                db7.execSQL(sql,new String[]{"红孩儿"});


1.菜鸟版:

                MydataBaseHelp dbOpenHelper6=new MydataBaseHelp(MainActivity.this,"day9",null,2);
                SQLiteDatabase db6 = dbOpenHelper6.getWritableDatabase();
                //参数一:表名  参数二:要修改的值  参数三:条件 参数四:为条件中的?赋值
                int  num2=db6.delete("User","name=?",new String[]{"红孩儿"});
                text.setText("删除"+num2+"");

2.正常版:

                MydataBaseHelp dbOpenHelper7=new MydataBaseHelp(MainActivity.this,"day9",null,2);
                SQLiteDatabase db7 = dbOpenHelper7.getWritableDatabase();
                String sql="delete from User where name = ? ";
                db7.execSQL(sql,new String[]{"红孩儿"});

                MydataBaseHelp dbOpenHelper8=new MydataBaseHelp(MainActivity.this,"day9",null,2);
                SQLiteDatabase db8=dbOpenHelper8.getWritableDatabase();
                //创建集合
                ArrayList<Map<String,Object>> list = new ArrayList<>();
                //执行查询语句
                Cursor cursor = db8.query("user", null, null, null, null, null, null);
                //遍历游标
                text.setText(cursor.getCount()+"");
                while (cursor.moveToNext()){

                    int id=cursor.getInt(cursor.getColumnIndex("_id"));
                    String name=cursor.getString(cursor.getColumnIndex("Name"));
                    int age=cursor.getInt(cursor.getColumnIndex("Age"));
                    String sex =cursor.getString(cursor.getColumnIndex("sex"));
                    //创建对象存入集合中
                    Log.e("###",cursor.getPosition()+"  ,"+name);
                    Map<String,Object> map = new HashMap();
                    map.put("_id",id);
                    map.put("name",name);
                    map.put("age",age);
                    map.put("sex",sex);
                    list.add(map);
                }
                text.setText(list.size()+"");

删除数据库:

               MydataBaseHelp dbOpenHelper9=new MydataBaseHelp(MainActivity.this,"day9",null,2);
                SQLiteDatabase db9=dbOpenHelper9.getWritableDatabase();
                db9.execSQL("delete from user");

事物的处理
try{}catch{}是为了预防报错
事物处理中 数据量大,但是有一条出错 其余的都不会继续

               MydataBaseHelp dbOpenHelper10=new MydataBaseHelp(MainActivity.this,"day9",null,2);
                SQLiteDatabase db10=dbOpenHelper10.getWritableDatabase();

                db10.beginTransaction();//开启事务
                try {
                    for (int i=0;i<1000;i++) {
                        Log.e("###",i+"");
                        db10.execSQL("insert into User(Name,sex,Age) values('"+i+"风清扬','男',108)");
                    }
                    db10.setTransactionSuccessful();//成功

                }catch (Exception e){
                    e.printStackTrace();
                }finally {
                    db10.endTransaction();//结束事务
                    db10.close();//关闭
                }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值