SQLite数据库的增删改查

一、前言

这篇文章主要针对Android自带的轻量级数据库SQLite 实现增删改查。该数据库常用于本地数据的储存喝管理。例如,可以将用户信息,日志数据等重要信息存储在SQLite数据库中。

二、代码实现

1.创建MySqliteOpenHelp作为工具类


/**
 * MySqliteOpenHelp作为工具类  使用单例模式(1.构造函数私有化:不让外界访问。2.对外提供函数)
 */

public class MySqliteOpenHelper extends SQLiteOpenHelper {

    //2.对外界提供函数 单例模式
    private static SQLiteOpenHelper mInstance;
    public static synchronized SQLiteOpenHelper getInstance(Context context){
        if (mInstance == null){
            mInstance = new MySqliteOpenHelper(context,"AnglinDB",null,1);//想要数据库升级把1改为2
        }
        return mInstance;
    }

    //为什么要有含参构造函数,因为需要传给父类上下文,数据库名称,工厂,版本号等参数
    //第一步:构造函数私有化:不让外界访问
    private MySqliteOpenHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);//传给父类
    }

    //创建表   表数据初始化   数据库第一次创建的时候调用。第二次发现有了就不会重复创建了。也意味着:函数只执行一次。
    //数据库初始化
    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表 :person
        //主键:primary key必须唯一的
        //自动增长:例如 1,2,3,4,5  autoincrement
        //_id标准的写法(要求1)    只能使用:主键只能使用Integer类型的(要求2)
        //id 写法不标准
        String sql = "create table person(_id integer primary key autoincrement, name text)";

        db.execSQL(sql);
    }

    //数据库升级
    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

2.实现数据库的增删改查

//SQLite增删改查
public class DBActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dbactivity);
    }

    /**
     * 生成DB文件
     *
     * @param view
     */
    public void createDB(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase readableDatabase = helper.getReadableDatabase();
    }

    /**
     * 查询
     *
     * @param view
     */
    public void query(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getReadableDatabase();

        if (db.isOpen()) {//确保数据库打开才能放心操作
            //返回游标
            Cursor cursor = db.rawQuery("select * from person", null);

            //迭代游标往下面移动来迭代数据
            while (cursor.moveToNext()) {
                @SuppressLint("Range")
                int _id = cursor.getInt(cursor.getColumnIndex("_id"));
                @SuppressLint("Range")
                String name = cursor.getString(cursor.getColumnIndex("name"));
                Log.d("Anglin", "query:_id " + _id +","+ "name:" + name);
            }
            //一定要记得关闭游标,否则会耗费性能
            cursor.close();
            //数据库也要关闭
            db.close();
        }

    }

    /**
     * 插入数据到数据库
     *
     * @param view
     */
    public void insert(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen()) {//确保数据库打开才能放心操作
            //插入语句
            String sql = "insert into person(name)values('Anglin')";
            db.execSQL(sql);
            //规范:必须关闭数据库
            db.close();
        }


    }

    /**
     * 修改第3条数据 为恭喜发财
     *
     * @param view
     */
    public void update(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen()) {//确保数据库打开才能放心操作
            //修改语句
            String sql = "update person set name =? where _id =?";
            db.execSQL(sql, new Object[]{"恭喜发财", 3});
            //规范:必须关闭数据库
            db.close();
        }

    }

    /**
     * 删除:第四条数据
     *
     * @param view
     */
    public void delete(View view) {
        SQLiteOpenHelper helper = MySqliteOpenHelper.getInstance(this);
        //database文件夹创建靠下面这句话
        SQLiteDatabase db = helper.getWritableDatabase();
        if (db.isOpen()) {//确保数据库打开才能放心操作
            //修改语句
            String sql = "delete from person  where _id =?";
            db.execSQL(sql, new Object[]{4});
            //规范:必须关闭数据库
            db.close();
        }

    }
}

 页面布局

<?xml version="1.0" encoding="utf-8"?>
<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=".study.DBSQLite.DBActivity">

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="createDB"
        android:text="生成DB文件"
        tools:layout_editor_absoluteX="191dp"
        tools:layout_editor_absoluteY="261dp" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="query"
        android:text="查询" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="insert"
        android:text="插入" />

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="update"
        android:text="修改" />

    <Button
        android:id="@+id/button6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="delete"
        android:text="删除" />
</LinearLayout>

相关推荐

  1. SQLite数据库增删

    2023-12-21 10:30:02       61 阅读
  2. sqlite3 数据库增删

    2023-12-21 10:30:02       39 阅读
  3. sqlite简单增删

    2023-12-21 10:30:02       45 阅读
  4. 数据库】MySQL表增删

    2023-12-21 10:30:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-21 10:30:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-21 10:30:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-21 10:30:02       82 阅读
  4. Python语言-面向对象

    2023-12-21 10:30:02       91 阅读

热门阅读

  1. work随笔记录(实时更新)

    2023-12-21 10:30:02       60 阅读
  2. C语言第五十四弹---模拟使用strstr函数

    2023-12-21 10:30:02       60 阅读
  3. Avalonia MVVM

    2023-12-21 10:30:02       56 阅读
  4. 栈(C++)

    2023-12-21 10:30:02       42 阅读
  5. vim的使用

    2023-12-21 10:30:02       57 阅读
  6. 服务器不稳定因素

    2023-12-21 10:30:02       53 阅读
  7. js new Set()过滤重复数据

    2023-12-21 10:30:02       58 阅读
  8. Linux下修改host文件

    2023-12-21 10:30:02       59 阅读
  9. c语言突击函数

    2023-12-21 10:30:02       75 阅读
  10. 【数据爬取】Jsoup爬取数据的使用

    2023-12-21 10:30:02       59 阅读