1、为什么要用SQLite?
SharedPreferences是以xml形式存储数据的,只适合储存基本数据类型的数据,文件存储的内容在读取解析时相对复杂;当数据量大,结构复杂时,如果使用SharedPreferences和文件储存对数据的操作将变得非常复杂,容易出错,效率低下,Android提供了SQLite数据存储,帮助我们解决这些问题。
2、什么是SQLite?
3、如何创建数据库和数据表?
新建继承类SQLiteOpenHelper;
实现其中的构造方法,重写onCreate方法和onUpgrade方法;
实例化SQLiteOpenHelper的子类对象;
调用getReadableDatabase方法或者getWritaDatabase方法。
这里以一个学生列表举例:
package com.example.sqliteapplication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySqiliteHelper extends SQLiteOpenHelper{
private String sql = "create table student(" +
"id integer primary key autoincrement not null," +
"name text," +
"age integer" +
")";
public MySqiliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(sql);//创建数据库及数据表
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//不需要更新数据时,什么都不用写
}
}
4、如何添加数据?
创建StudentActivity,在里面写一个方法addStudent(),内容如下:
private void addStudent() {
String name = name_et.getText().toString();
int age = Integer.parseInt(age_et.getText().toString());
ContentValues values = new ContentValues();
values.put("name",name);
values.put("age",age);
MySqiliteHelper mySqiliteHelper = new MySqiliteHelper(this,"student_db",null,1);
SQLiteDatabase sqLiteDatabase = mySqiliteHelper.getWritableDatabase();
sqLiteDatabase.insert("student",null,values);
}
5.如何删除数据?
private void delectstudent() {
String name= nameET.getText().toString();
int age= Integer.parseInt(ageET.getText().toString());
MySQLiteHelper mysqliteHelper=new MySQLiteHelper(this,"student_db",null,1);
SQLiteDatabase db=mysqliteHelper.getReadableDatabase();
db.delete("student","name=?",new String[]{name});
}
6.如何修改数据?
private void updatestudent() {
String name= nameET.getText().toString();
int age= Integer.parseInt(ageET.getText().toString());
MySQLiteHelper mysqliteHelper=new MySQLiteHelper(this,"student_db",null,1);
SQLiteDatabase db=mysqliteHelper.getReadableDatabase();
ContentValues values=new ContentValues();
values.put("name","zyx");
db.update("student",values,"name=? and age=?",new String[]{name,age+""});
}
7.如何查询数据?
private void selectstudent() {
MySQLiteHelper mysqliteHelper=new MySQLiteHelper(this,"student_db",null,1);
SQLiteDatabase db=mysqliteHelper.getReadableDatabase();
Cursor cursor=db.query("student",null,null,null,null,null,null);
cursor.moveToFirst();
mysqlList.clear();
do{
int id=cursor.getInt(cursor.getColumnIndex("id"));
String name=cursor.getString(cursor.getColumnIndex("name"));
int age=cursor.getInt(cursor.getColumnIndex("age"));
MySQL s=new MySQL(name,id,age);
mysqlList.add(s);
Log.e("selectstudent",name+"-"+age+"-");
}while (cursor.moveToNext());
sqladapter=new SQLAdapter(SQLActivity.this,mysqlList);
listView.setAdapter(sqladapter);
}