Android数据库的使用(增删改查)

写一个Demo,大概如下,5个button点击事件(最后有源码)
在这里插入图片描述
第一步,创建一个据库辅助类:只做三件事 (创库,创表,更新/升级)
先来个没写操作的
在这里插入图片描述
然后如下操作
在这里插入图片描述
第二步:在Activity文件中初始化辅助类在这里插入图片描述
第三步:创建数据库(第一个button点击事件)在这里插入图片描述
第四步(增删改查,另外四个点击事件);
插入数据–增
在这里插入图片描述
删除数据–删
在这里插入图片描述
更改数据–改
在这里插入图片描述
查询数据–查
在这里插入图片描述
下面是源码
DataBaseHelp如下:

//创建数据库辅助类:创库,创表,更新/升级
public class DataBaseHelp extends SQLiteOpenHelper {
    //数据库名称
    public static final String DB_NAME = "my_database.db";
    //数据库版本
    private static final int DB_VERSION = 1;
    //表名
    public static final String TABLE_NAME = "table_demo";

    /*context:上下文
     *name:要被创建的数据库名称(文件名)
     *factory:游标工厂
     * version:数据库版本
     * */
    public DataBaseHelp(@Nullable Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    //创建表
    @Override
    public void onCreate(SQLiteDatabase db) {
        //用SQL语句来创建表
        String sql = "create table if not exists " + TABLE_NAME + "(_id integer primary key autoincrement,name varchar(20),age integer)";
        //执行语句
        db.execSQL(sql);
        Log.e("sql", "onCreate: " + "表创建成功");
    }

    //用于更新数据库
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //当当前版本和老版本不一样的时候
        if (newVersion != oldVersion) {

        }
    }
}

DataBaseActivity如下:

public class DataBaseActivity extends AppCompatActivity {

    private DataBaseHelp helper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_data_base);
        //初始化辅助类
        helper = new DataBaseHelp(this);
    }

    //创建数据库
    public void btncreate(View view) {
        //getWritableDatabase()打开数据库
        SQLiteDatabase db = helper.getWritableDatabase();
        //当数据库不用时关闭数据库(为了防止博主Demo出错。。。。。)
        db.close();

    }

    //添加数据
    public void btninsert(View view) {
        SQLiteDatabase db = helper.getWritableDatabase();
        //Android为了方便程序员SQL开发,提供了一个贼好的API: ContentValues(添加数据交给它)
        ContentValues values = new ContentValues();
        //放值
        values.put("name", "张三");
        values.put("age", 18);
        db.insert(DataBaseHelp.TABLE_NAME, null, values);
        values.put("name", "李四");
        values.put("age", 19);
        db.insert(DataBaseHelp.TABLE_NAME, null, values);
        values.put("name", "王五");
        values.put("age", 20);
        db.insert(DataBaseHelp.TABLE_NAME, null, values);
        //关闭数据库
        db.close();

    }

    //删除数据
    public void btndelete(View view) {
        SQLiteDatabase db = helper.getWritableDatabase();
        /*table :表名
         * whereClause:满足删除条件 格式:例子: "name=?"
         * whereArgs:满足删除的条件*/
        db.delete(DataBaseHelp.TABLE_NAME, "name=?", new String[]{"张三"});
        //关闭数据库
        db.close();
    }

    //修改数据
    public void btnupdate(View view) {
        SQLiteDatabase db = helper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", "BoRe");
        values.put("age", 7);
        /*
         * table:表名
         * values:更新的数据
         * whereClaues:更新条件 格式:例子: "name=?"
         * whereArgs:满足更新的条件*/
        db.update(DataBaseHelp.TABLE_NAME, values, "name=?", new String[]{"李四"});
        //关闭数据库
        db.close();
    }

    //查找数据
    public void btnselect(View view) {
        SQLiteDatabase db = helper.getWritableDatabase();
        /*
         *table :表名
         * colums:被查询的列(字段)
         * selection :查询条件
         * selectionArgs:满足查询条件
         * group:指定分组
         * having:分组筛选数据的关键字
         * orderby:排序*/
        Cursor cursor = db.query(DataBaseHelp.TABLE_NAME, new String[]{"name", "age"}, null, null, null, null, null);
        //数据拿到了,已经在cursor游标中,现在要遍历游标
        //先拿到我们关心的列的索引
        int nameIndex = cursor.getColumnIndex("name");
        int ageIndex = cursor.getColumnIndex("age");
        while (cursor.moveToNext()) {
            //通过列的索引去获取单个格子的值
            String name = cursor.getString(nameIndex);
            int age = cursor.getInt(ageIndex);
            Log.e("Select", "btnselect: " + name + age);
        }
        //关闭数据库
        db.close();

    }
}

xml文件如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".DataBaseActivity">
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="btncreate"
    android:text="创建"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btninsert"
        android:text="插入数据"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btndelete"
        android:text="删除数据"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btnupdate"
        android:text="更改数据"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="btnselect"
        android:text="查询数据"/>
</LinearLayout>
  • 26
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值