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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值