您的位置:首页 > 数据库 > SQL

SqliteOpenHelper封装的增删改查方法(16)

2016-02-21 00:00 609 查看
摘要: 除了用execSQL()进行增删改外,另外SqliteOpenHelper封装了delete(),insert(),update()方法
面向对象的封装操作类

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 ");
// 实际操作是先备份数据,再进行删除升级
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: