SQLite
- 为什么要用SQLite
- 什么是SQLite
- 如何创建数据库和数据表
- 如何添加数据
- 如何删除数据
- 如何修改数据
- 如何查询数据
为什么要用SQLite
- SharedPreferencens是以XML形式存储数据的,只适合存储基本数据类型的数据。
- 文件存储的内容在提取(解析)数据,相对复杂。
- 当文件量大,结构复杂时,容易出错,效率低下,Android中提供了SQLite数据存储,帮助我们解决这些问题。
什么是SQLite
- SQLite数据库存储是Android系统提供的数据存储方式之一。
- SQLite是转为嵌入式设备设计的一款轻量级数据库。
- SQLite占用资源非常低,在嵌入式设备中只需要几百K的内存。
- SQLite支持标准SQL语法,遵循数据库的ACID事务。
- SQLite不需要安装,不需要用户密码就可以使用。
如何创建数据库和数据表
- 新建类继承SQLiteOpenHelper
- 实现构造方法
- 重写onCreate
- 重写onUpgrade
- 实例化SQLiteOpenHelper的子类对象。
- 调用getReadableDatabase方法或者getWritableDatabase方法。
private String sql="create table student(" +
"id integer primary key autoincrement," +
"name text," +
"age text" +
")";
public MyDBhelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
如何添加数据
private void addStudent() {
MyDBhelper dBhelper=new MyDBhelper(this,"student_db",null,1);
SQLiteDatabase sqLiteDatabase=dBhelper.getWritableDatabase();
ContentValues contentValues=new ContentValues();
contentValues.put("name",student_name.getText().toString());
contentValues.put("age",student_age.getText().toString());
sqLiteDatabase.insert("student",null,contentValues);
}
如何删除数据
private void delStudent() {
dBhelper=new MyDBhelper(this,"student_db",null,1);
sqLiteDatabase=dBhelper.getWritableDatabase();
String name=student_name.getText().toString();
String age=student_age.getText().toString();
sqLiteDatabase.delete("student","name=?",new String[]{name});
}
如何修改数据
private void modifyStudent() {
dBhelper = new MyDBhelper(this, "student_db", null, 1);
sqLiteDatabase = dBhelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
String name = student_name.getText().toString();
String age = student_age.getText().toString();
contentValues.put("name", "bbb");
sqLiteDatabase.update("student", contentValues, "name=?", new String[]{name});
}
如何查询数据
public void listStudent() {
studentList.clear();
Cursor cursor = sqLiteDatabase.query("student", null, null, null, null, null, null);
cursor.moveToFirst();
do {
String name = cursor.getString(cursor.getColumnIndex("name"));
int age = cursor.getInt(cursor.getColumnIndex("age"));
int id = cursor.getInt(cursor.getColumnIndex("id"));
Log.e(TAG, "listStudent: " + id + "-" + name + "-" + age);
studentList.add(new Student(id, name, age));
} while (cursor.moveToNext());
Student_Adapater adapater = new Student_Adapater(studentList, this);
student_listview.setAdapter(adapater);
}