一、为什么要用SQLite
SQLite不需要配置,这意味着不需要安装或管理。
一个完整的SQLite数据库是存储在一个单一的跨平台的磁盘文件。
SQLite是非常小的,是轻量级的,完全配置时小于400kb,省略可选功能配置时小于250kb。
SQLite是自给自足逇,这意味着不需要任何外部的依赖。
SQLite事务是完全兼容ACID的,允许多个进程或县城安全访问。
二、什么是SQLite
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
三、如何创建数据库和数据表
想要创建数据库和数据表的话,我们先要创建出一个类来继承SQLiteOpenHelper这个抽象类
SQLiteOpenHelper类提供了两个方:onCreate(SQLiteDataBase sqldatabase)和onUpgrade(SQLiteDataBase sqldatabase,int i,int i1)
当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteDatabase实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCreate()方法,onCreate()方法在初次生成数据库时才会被调用,在onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据。onUpgrade()方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号。
public class MyDBhelper extends SQLiteOpenHelper{
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);
}