import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.Sqlutil.MySqliteOpenHelper;
/**
* studentinfo --> Student实体 --->StudentService 对Student实体的操作类(增删改查)
* student2.db: data/data/{包名}/database/xxx.db 面向对象的封装操作类
*/
public class StudentService {
private MySqliteOpenHelper dbhelper;
// 除了用execSQL()进行增删改外,另外SqliteOpenHelper封装了delete(),insert(),update()方法
// 面向对象的封装操作类
public StudentService(Context context) {
dbhelper = new MySqliteOpenHelper(context);
}
// 查找所有
public List<Student> findAllStudents() {
List<Student> list = new ArrayList<Student>();
// dbHelper.getReadableDatabase() : 如果空间不足,不能写,只能读
// dbHelper.getWritableDatabase(); 如果空间不足,既不能写,也不能读(报错)
SQLiteDatabase db = dbhelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select*from studentinfo", null);
while (cursor.moveToNext()) {
// 按以下方式写时要注意数据库顺序
int sid = cursor.getInt(0);
String sname = cursor.getString(1);
String sex = cursor.getString(2);
int score = cursor.getInt(3);
Student stu = new Student(sid, sname, sex, score);
list.add(stu);
}
cursor.close();
db.close();
return list;
}
// 添加
public long add(Student student) {
SQLiteDatabase db = dbhelper.getReadableDatabase();
ContentValues values = new ContentValues();
values.put("sname", student.getSname());
values.put("sex", student.getSex());
values.put("score", student.getScore());
long row = db.insert("studentinfo", null, values);
// 插入成功后返回的是影响的主键
db.close();
return row;
}
// 更新
public int update(ContentValues values, String whereClause,
String[] whereArgs) {
SQLiteDatabase db = dbhelper.getReadableDatabase();
int row = db.update("studentinfo", values, whereClause, whereArgs);
db.close();
return row;// 返回的是受影响的行
}
// 删除
public int delete(String whereClause, String[] whereArgs) {
SQLiteDatabase db = dbhelper.getReadableDatabase();
int row = db.delete("studentinfo", whereClause, whereArgs);
db.close();
return row;// 返回的是受影响的行
}
}
//SQLiteOpenHelper类
public class MySqliteOpenHelper extends SQLiteOpenHelper {
private static final String DBNAME = "student2.db";
private static final int VERSION = 1;// 版本可以自己取
public MySqliteOpenHelper(Context context) {
super(context, DBNAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// 创建数据库表,首次升级时调用,初始化一些数据
String sql = "create table studentinfo "
+ " (sid integer primary key autoincrement not null,"
+ " sname varchar(30) not null," + " sex varchar(2) not null,"
+ " score integer not null)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// 大于旧版本时,就升级
if (newVersion > oldVersion) {
db.execSQL("drop table if exists studentinfo ");
// 实际操作是先备份数据,再进行删除升级
}
}
}
转载于:https://my.oschina.net/u/2541146/blog/618301