SQLiteDataBase是Android手机的内置的一个轻型数据库,学会对数据库的使用,将会在编程时提供很大的方便,而且能瞬间提高逼格,使程序看上去高大上好多,给以一种菜鸟看不懂我程序的感觉(虽然很简单),不过吹牛逼很是方便的,好了废话也不多说了,这里我就讲讲我在最近的一次开发中用到数据库时的使用。因为自己也是新手,数据库还没有开设课程,所以只会一些简单的用法,也就是著名的增删改查啦。
要使用数据库时,当然需要一个实体类啦,因为我做的是关于学生方面的东西,所以我就拿学生类来做实体类。
package com.example.sqlite.model;
public class ModelStudent {
//学生表主键ID
private int studentID;
//学生学号
private String account;
//学生姓名
private String name;
//学生性别
private String sex;
//学生专业
private String major;
public int getStudentID() {
return studentID;
}
public void setStudentID(int studentID) {
this.studentID = studentID;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
@Override
public String toString() {
return "ModelStudent [studentID=" + studentID + ", account=" + account
+ ", name=" + name + ", sex=" + sex + ", major=" + major + "]";
}
}
上面就是学生类的定义,包括最基本的set和get方法。其中StudentID是要作为数据库的主键来使用的。
好了,关于数据库的操作从这里开始:
首先,我们要有一个数据库。在Android开发中,有许多的东西都需要一定的权限,比如开发从网络获取资源需要权限,打电话需要权限等等。这里要注意,数据库是不需要权限的,大家一定要注意一下。
(一)建表
建表的方法也不是太复杂,但是说明起来就比较难了。因为要想成功的操作数据库,就必须实现一定的封装,否则操作起来就很是麻烦。但是这里我就不进行封装了,因为太麻烦了,不过我会把当时自己的测试APP分享给大家,对封装感兴趣的,大家可以研究一下。
@Override
public void onCreate(SQLiteDatabase pSqLiteDatabase) {
StringBuilder _StringBuilder = new StringBuilder();
_StringBuilder.append(" Create TABLE Student( ");
_StringBuilder.append(" [StudentID] integer PRIMARY KEY autoincrement NOT NULL");
_StringBuilder.append(" ,[Account] varchar(15) NOT NULL");
_StringBuilder.append(" ,[Name] varchar(10) NOT NULL");
_StringBuilder.append(" ,[Sex] varchar(6) NOT NULL");
_StringBuilder.append(" ,[Major] varchar(15) NOT NULL");
_StringBuilder.append(" )");
pSqLiteDatabase.execSQL(_StringBuilder.toString());
这就是建表语句,这是SQLiteOpenHelper类中的一个方法,该类是数据库操作的辅助类,我们可以继承它建一个新类,在里面实现方法。在建表语句中,"Student"是表名,当然建表的前提是要有数据库对象,下面我们在生成数据库对象,因为表是在数据库的里面的。(因为建表比较麻烦,当然我说的是语句麻烦,很容易出错,这里我推荐一个软件,SQLiteDeveloper 这个可以用来建表,很方面,具体用法大家可以度娘了,我就不详细介绍了)
private SQLiteHelper(Context pContext){
super(pContext, "database.db", null,1);
}
这里我们是用SQLiteHelper继承SQLiteOpenHelper,上面是SQLiteHelper的构造方法,其中,在super中,“database.db”是数据库名称,1 是版本号。当生成SQLiteHelper对象时,如果数据库不存在,则创建数据库。其中,SQLiteOpenHelper有一个方法,getWritableDatabase() ,它返回的就是一个可写的SQLiteDataBAse对象。要删除数据库也很简单,deleteDatabase("database.db"); 这是在MainActivity中直接调用的,看来是Activity中的方法了,它返回boolean值,删除成功返回true。
好了,接下来是重头戏了。
(增):
<span style="white-space:pre"> </span>public boolean insertStudent(ModelStudent pModelStudent){
ContentValues _ContentValues = createParms(pModelStudent);
long newID = getDataBase().insert(getTableNameAndPK()[0], null,_ContentValues);
return newID > 0;
}
这个 函数就死用来实现增加数据。其中,createParms是我自己定义的函数,它的作用就是把ModelStudent对象转换为ContentValues对象,因为增加数据调用的是SQLiteDataBase的方法,它需要ContentValues对象作为参数,当然也可以直接用SQl语句来实现,当然很麻烦,我就不推荐了。getDataBase函数也是我自己定义的,它返回的是一个SQliteDataBase的对象,比较简单我就不给出函数代码了。不过createParms函数我还是给大家代码啦,容易理解。
<span style="white-space:pre"> </span>public ContentValues createParms(ModelStudent pModelStudent){
ContentValues _ContentValues = new ContentValues();
_ContentValues.put("Account", pModelStudent.getAccount());
_ContentValues.put("Name", pModelStudent.getName());
_ContentValues.put("Sex", pModelStudent.getSex());
_ContentValues.put("Major", pModelStudent.getMajor());
return _ContentValues;
}
增加数据的操作到这里就结束了。
(删):
<span style="white-space:pre"> </span>protected boolean delete(String p_TableName,String p_Condition){
return getDataBase().delete(p_TableName, " 1=1 " + p_Condition,null) >= 0;
}
删除操作也就是一句话,这里需要注意的是函数的参数,p_TableName是我们的表名,也就是建表语句中的Student,而p_condition是SQL语句,删除的时候,我们一般都是按照ID来删除,也就是我们ModelStudent类中StudentID," And StudentID = " + StudentID 这个就是p_Condition,(注意前后空格要有)。
(改):
<span style="white-space:pre"> </span>public boolean UpdateStudent(String pCondition,ModelStudent pModelStudent){
ContentValues _ContentValues = createParms(pModelStudent);
return getDataBase().update("Student", _ContentValues, pCondition, null) > 0;
}
改也就是更新数据信息,我们来看函数。同样,pCondition也是SQL语句,pModelStudent是修改过信息的ModelStudent对象。我们要做的就是把已经存在数据库中的信息更改。updata函数是SQLiteDataBase中的方法,第一个参数是表名,第二个是ContentValues对象,第三个是条件语句,第四个,就暂时用null吧,也没事。
" StudentID = " StudentID() 这个就是pCondition。
(查):
rawQuery(p_sqlText, null),查询也就是这一行代码,它返回的就是Cursor对象,里面包含查询的信息。当然如何把里面的信息提取出来也不是难事,只要对Cursor类有一定的了解,就可以很简单的实现了。
SqlText = "Select * From Student " + " Where StudentID = " + pStudentID 这个就是按ID来查询了,如果把where及后面的语句都去掉,那么得到的就是全部的数据库包含的信息了。
好了,至此,数据库的操作也基本结束了,希望大家能够 明白,毕竟我对数据库也是一知半解的。不过,在我的测试数据库的App中,里面包含了详细的操作,当然是封装的很好的,各种处理,有什么不太明白的可以参考那个东西。
链接:http://download.csdn.net/detail/programchangesworld/8564389