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

举报
计蒙不吃鱼 发表于 2025/06/03 23:26:10 2025/06/03
【摘要】 本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。

写一个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>
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。