什么是SQLite
1.SQLite数据库存储是Android系统提供的数据存储方式之一
2.SQLite是专为嵌入式设备设计的一款轻量级数据库
3.SQLite占用资源非常低,在嵌入式设备中,只需要几百K的内存
4.SQLite支持标准的SQL语法,遵循数据库的ACID事务
5.SQLite是android系统自带,不需要单独安装,不需要用户名密码就可以使用
SQLite的用法
在使用SQLite时我们需要先创建一个数据库和表。所以我们先创建一个类来继承SQLiteOpenHelper
public class DBHelper extends SQLiteOpenHelper {
//创建数据库
private String school="create table student(" +
"id integer primary key autoincrement not null," +
"name text)";
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//启用数据库
sqLiteDatabase.execSQL(school);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
在创建数据库的时候我们需要多加小心,因为在Android Studio中写SQLite语句并不会像写JAVA语句一样,会报错。
之后我们需要在其他的Activity中调用这个数据库
private Button button1;
private Button button2;
private Button button3;
private Button button4;
private EditText editText1;
private EditText editText2;
private DBHelper dbHelper;
private SQLiteDatabase sqLiteDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sql);
bindID();
dbHelper = new DBHelper(this, "sql", null, 1);
}
private void bindID() {
button1 = findViewById(R.id.lite_btn1);
button2 = findViewById(R.id.lite_btn2);
button3 = findViewById(R.id.lite_btn3);
button4 = findViewById(R.id.lite_btn4);
editText1 = findViewById(R.id.lite_et1);
editText2 = findViewById(R.id.lite_et2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.lite_btn1:
SQLiteDatabase sqLiteDatabase=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("name",editText1.getText().toString());
sqLiteDatabase.insert("student",null,values);
break;
case R.id.lite_btn2:
SQLiteDatabase sqLiteDatabase1 =dbHelper.getReadableDatabase();
//创建游标
Cursor cursor =sqLiteDatabase1.query("student",null,null,null,null,null,null);
//游标置顶
cursor.moveToFirst();
do {
String name =cursor.getString(cursor.getColumnIndex("name"));
Log.e("NAME",name);
//游标归零
}while (cursor.moveToFirst());
break;
case R.id.lite_btn3:
String name =editText1.getText().toString();
String Newname=editText2.getText().toString();
SQLiteDatabase sqLiteDatabase2 =dbHelper.getReadableDatabase();
ContentValues values1=new ContentValues();
values1.put("name",Newname);
//第二个参数是修改的字段及修改的值(已经存放到ContentValues中)
//第三个参数是WHERE语句
//第四个参数是WHERE语句中占位符的填充值
//如果第三四个参数为null,那就将每条记录都改掉
sqLiteDatabase2.update("student",values1,"name=?",new String[]{name});
break;
case R.id.lite_btn4:
SQLiteDatabase sqLiteDatabase3 =dbHelper.getReadableDatabase();
String name1=editText1.getText().toString();
//第二个参数是WHERE语句(即执行条件,删除哪条数据)
//第三个参数是WHERE语句中占位符(即"?"号)的填充值
sqLiteDatabase3.delete("student","name=?",new String[]{name1});
break;
}
}