标签:数据库 sqlite android开发 嵌入式 database
在Android开发中,我们一般可以使用文件、sharedpreferences、以及数据库来保存我们程序运行中产生的数据,本篇主要讲解如何使用SQLite数据库,完成数据的增删改查的一般操作
SQLite 和其他的主要 SQL 数据库没什么区别。它的优点就是高效,Android 运行时环境包含了完整的 SQLite。
SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing.)。
此外,SQLite 不支持一些标准的 SQL 功能,特别是外键约束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 还有一些 ALTER TABLE 功能。
除了上述功能外,SQLite 是一个完整的 SQL 系统,拥有完整的触发器等等。
/**
* 数据库创建类
*
* @author ZhaoKaiQiang
* @time 2014年6月4日
*/
public class MyDbOpenHelper extends SQLiteOpenHelper {
// 数据库的名称
private static final String DATEBASE_NAME = "student.db";
// 数据库的版本
private static final int DATEBASE_VERSION = 1;
// 必须定义一个构造函数,并且调用父类的构造函数
public MyDbOpenHelper(Context context) {
super(context, DATEBASE_NAME, null, DATEBASE_VERSION);
}
// 当数据库被第一次使用的时候,系统会判断是否已经创建数据库。若还未创建数据库,则运行下面的SQL语句完成数据库的创建
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE student(id integer primary key autoincrement,name vchar(20),age integer,school vchar(50))");
}
// 当数据库的版本发生变化的时候,系统会自动调用这个方法,我们可以在这里完成数据库的更新等操作
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}/**
* 学生实体类
* @author ZhaoKaiQiang
* @time 2014年6月4日
*/
public class Student implements Serializable {
private static final long serialVersionUID = -4885878468381093121L;
private int id;
private String name;
private int age;
private String school;
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;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public Student(int id, String name, int age, String school) {
super();
this.id = id;
this.name = name;
this.age = age;
this.school = school;
}
public Student() {
super();
}
@Override
public String toString() {
return "--id = " + id + " --name = " + name + "--age = " + age + "--school = " + school;
}
}// 添加数据
public void add(String name, int age, String school) {
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
database.execSQL("insert into student(name,age,school) values(?,?,?)", new Object[] { name, age, school });
}//测试数据添加
public void testAdd() throws Exception {
StudentDbHelper dbHelper = new StudentDbHelper(getContext());
dbHelper.add("zhao", 19, "QUST");
dbHelper.add("kai", 18, "青大");
dbHelper.add("qiang", 17, "清华");
dbHelper.add("da", 16, "青农");
dbHelper.add("huai", 15, "青医");
dbHelper.add("dan", 14, "青岛");
}// 删除数据
public void delete(int id) {
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
database.execSQL("delete from student where id=?", new Object[] { id });
}//删除方法测试
public void testDelete() throws Exception {
StudentDbHelper dbHelper = new StudentDbHelper(getContext());
dbHelper.delete(3);
}// 修改
public void update(Student student) {
SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
database.execSQL("update student set name=?,age=?,school=? where id=?", new Object[] { student.getName(), student.getAge(), student.getSchool(), student.getId() });
}// 修改方法测试
public void testUpdate() throws Exception {
StudentDbHelper dbHelper = new StudentDbHelper(getContext());
Student student = new Student(1, "修改", 10, "家里蹲");
dbHelper.update(student);
}结果图// 查询
public Student find(int id) {
SQLiteDatabase database = dbOpenHelper.getReadableDatabase();
// 获取查询结果的游标
Cursor cursor = database.rawQuery("select * from student where id=?", new String[] { id + "" });
// 利用游标获取对应的值
if (cursor.moveToFirst()) {
Student student = new Student();
student.setId(cursor.getInt(cursor.getColumnIndex("id")));
student.setAge(cursor.getInt(cursor.getColumnIndex("age")));
student.setName(cursor.getString(cursor.getColumnIndex("name")));
student.setSchool(cursor.getString(cursor.getColumnIndex("school")));
return student;
}
return null;
}//查找方法测试
public void testFind() throws Exception {
StudentDbHelper dbHelper = new StudentDbHelper(getContext());
Student student = dbHelper.find(1);
Log.d(TAG, student.toString());
}【Anroid进阶】SQLite数据库使用完全详解,布布扣,bubuko.com
标签:数据库 sqlite android开发 嵌入式 database
原文地址:http://blog.csdn.net/zhaokaiqiang1992/article/details/28419759