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 "); // 实际操作是先备份数据,再进行删除升级 } } }
相关文章推荐
- MySQL server has gone away
- SQL Developer新建连接
- Schemaless架构(二):Uber基于MySQL的Trip数据库
- 【Linux运维入门】Linux环境编译安装、配置Mysql
- Mysql在大型网站的应用架构演变
- mysql启动报错:Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist
- OLTP应用之MySQL架构选型 图文教程
- ]postgresql 维护手册
- MySQL监控系统Lepus的搭建
- 服务器监控之Zabbix自带模块监控Mysql服务篇
- MySQL数据库的优化-运维架构师必会高薪技能,笔者近六年来一线城市工作实战经验
- SqlServer OpenXML函数忽略表中自增列
- OPENXML (Transact-SQL)
- FMDB 架构图 与 常见sql语句
- grafana与zabbix结合使用监控mysql
- PLSQL Developer报“动态执行表不可访问,本会话的自动统计被禁止”的解决方案
- zabbix使用自带模板监控mysql
- 新版OpenShift空间申请使用教程-安装WordPress,Mysql及绑定域名,文件管理
- MySQL Range Optimization
- SQL Server无法连接到DESKTOP-QIIG 55L:无法打开SQL Server连接 详解