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});
}