Android学习四:数据库操作
1前言
android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包。SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库。
2代码
简单的数据库类封装
package org.tonny.utils; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context) { /** * students.db 数据库的名字 ;null 表示使用默认的游标工厂 ;1 表示一开始的版本,建议设置为1 */ super(context, "sutdents.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { // 该方法在第一次创建数据库的时候被调用 // 因此可以在这个地方创建表之类的操作 db.execSQL("CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 修改数据库的版本会触发此函数 // 在这里可以添加新的表或者修改表的字段 } }
模型对象
package org.tonny.utils; public class Student { private int id; private String name; public Student() { } public Student(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
控制逻辑
package org.tonny.utils; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class StudentService { private DBHelper dbHelper = null; public StudentService(Context context) { this.dbHelper = new DBHelper(context); } public void insert(Student stu) { // 内部有緩存功能,使用的是同一個句柄,如果数据库满了,则返回一个只读的句柄 SQLiteDatabase db = dbHelper.getWritableDatabase(); // 使用占位符號‘?’,防止特殊字符 db.execSQL("INSERT INTO student VALUES(?,?)", new Object[] { stu.getId(), stu.getName() }); } public void delete(Integer id) { SQLiteDatabase db = dbHelper.getReadableDatabase(); db.execSQL("DELETE FROM student WHERE id = ?", new String[] { String.valueOf(id) }); } public void update(Student stu) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("UPDATE student SET name = ? WHERE id = ?", new String[] { stu.getName(), String.valueOf(stu.getId()) }); } public Student query(Integer id) { SQLiteDatabase db = dbHelper.getReadableDatabase(); String sql = "SELECT * FROM student WHERE id = ?"; Cursor cursor = db.rawQuery(sql, new String[] { String.valueOf(id) }); if (cursor.moveToFirst()) { int stuId = cursor.getInt(cursor.getColumnIndex("id")); String stuName = cursor.getString(cursor.getColumnIndex("name")); return new Student(stuId, stuName); } return null; } }
3总结
数据库的操作都差不多,就这些吧,还有的其他功能等我回头再完善吧。