Android |(十一)数据存储2 SQLite存储

        SQLite 是一种嵌入式关系型数据库管理系统(RDBMS),专门用于在移动设备和嵌入式系统上存储和管理数据。它是一种轻量级(相对于MySQL和SQLServer-电脑或服务器上)的数据库解决方案,被广泛用于 Android 应用程序(手机或手表上)的本地数据存储。

        Sqlite在实际企业开发中,实际上并不会直接使用。因为编写的代码量比较多,不是ORM(对象关系映射)框架。

        实际企业开发中,会使用一些ORM框架,如:Room、GreenDao、LitePal等。

实战演示 

设置主Activity参考:Android |(七)四大组件1 Activity-CSDN博客

(一)准备(附代码)

  • 插入/查询/修改/删除 SQLite数据库中的信息
  • 给四个按钮添加点击事件
  • 使用viewBinding(参考:Android |(十)findViewById升级之旅-CSDN博客):
    • 每个 XML 布局文件生成一个绑定类
    • 绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用
private ActivitySqliteBinding binding;
//onCreate()中
binding = ActivitySqliteBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

(二)创建数据库帮助类

类继承于 SQLiteOpenHelper,重写方法、构造方法,用于创建和管理数据库

public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(Context context) {
        //数据库的名字、版本(整数且递增)
        super(context,"SLDemo.db",null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建用户表 自增字段
        String SLDemo = "create table user(" +
                "id   integer primary key autoincrement ," +
                "name varchar(20)," +
                "phone integer)";
        //执行SQL语句
        db.execSQL(SLDemo);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//暂时不学    
}
}
public class SQLiteActivity extends AppCompatActivity {

    DataBaseHelper dataBaseHelper;
    private SQLiteDatabase writableDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sqlite);
        
        writableDatabase = dataBaseHelper.getWritableDatabase();
        
    }
}

(三)基本操作

1.插入

public void bt_insert(View view) {
        //把用户写在输入框(EditText)中的文字存到变量中
        String name = binding.etName.getText().toString();
        String phone = binding.etPhone.getText().toString();
        //判断用户输入是否为空
        if (TextUtils.isEmpty(name) || TextUtils.isEmpty(phone)){
            Toast.makeText(this, "姓名或电话不能为空", Toast.LENGTH_SHORT).show();
            return;
        }

        ContentValues values = new ContentValues();
        values.put("name",name);
        values.put("phone",phone);

        writableDb.insert("user",null,values);

        //清空输入框
        binding.etName.setText("");
        binding.etName.setText("");
        //为了显示
        Toast.makeText(this, "插入成功", Toast.LENGTH_SHORT).show();
    }

2.查询

@SuppressLint("Range")
    public void bt_select(View view) {
        binding.tvShowResult.setText("");
        //查询所有用户
        Cursor cursor = writableDb.query("user", null, null,
                null, null, null, null, null);
        if(cursor.moveToFirst()){//JAVA 将游标移动到第一行
            do {
                String name = cursor.getString(cursor.getColumnIndex("name"));
                String phone = cursor.getString(cursor.getColumnIndex("phone"));
                binding.tvShowResult.append("姓名:"+name + "电话号码"+phone + "\n");
            }while (cursor.moveToNext());
        }
    }

3.更新

public void bt_update(View view) {
        //把用户写在输入框(EditText)中的文字存到变量中
        String name = binding.etName.getText().toString();
        String phone = binding.etPhone.getText().toString();
        //判断用户输入是否为空
        if (name.isEmpty()){
            Toast.makeText(this, "姓名为空", Toast.LENGTH_SHORT).show();
            return;
        }

        ContentValues values = new ContentValues();
        values.put("phone",phone);

        //根据姓名修改电话
        writableDb.update("user",values,"name=?",new String[]{name});

    }

4.删除

public void bt_delete(View view) {
        //把用户写在输入框(EditText)中的文字存到变量中
        String name = binding.etName.getText().toString();
        String phone = binding.etPhone.getText().toString();
        //判断用户输入是否为空
        if (name.isEmpty()){
            Toast.makeText(this, "姓名为空", Toast.LENGTH_SHORT).show();
            return;
        }
        //根据姓名删除用户
        writableDb.delete("user","name = ?",new String[]{name});
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值