1.SQLite简介
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用,占用资源非常的低,在嵌入式设备中,所需的内存很小且支持 Windows/Linux/Unix等主流的操作系统,同时能够跟PHP、Java、C++、.net等程序语言相结合,还有ODBC (开放数据库连接Open Database Connectivity)接口,相比Mysql处理速度更快,更小。
2.SQLite的特点:
-
1、轻量级
SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态 库, 就可以使用它的全部功能,且动态库的尺寸也很小。
-
2、不需要"安装"
SQLite的核心引擎不依赖第三方的软件。
-
3、单一文件
数据库中所有的信息(比如表、视图等)都包含在一个文件内并可以自由复制到其它目录或其它机器上。
-
4、跨平台/可移植性
SQLite除了支持主流操作系统外其它一些不常用的操作系统。
-
5、弱类型的字段
-
6、开源(通俗的说就是不要钱的)
3.数据类型
五种常用的数据类型(与其他数据库类似):
NULL: 空值
VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。
CHAR(n):长度固定为n的字串,n不能超过 254。
INTEGER: 整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
REAL: 浮动的数值,被存储为8字节的IEEE浮动标记序号.
4.增删改操作
SQLiteDatabase
SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。
db=SQLiteDatabase.openOrCreateDatabase("/data/data/cn.askong.sqlistdb/test.db",null);
下面是几种方法的具体代码
创建表
private void createTable(SQLiteDatabase db){
//创建表SQL语句
String tablea="create table tablea(_id integer primary key autoincrement,namea desca)";
//执行SQL语句
db.execSQL( tablea);
}
插入数据
private void insert(SQLiteDatabase db){
ContentValues cValue = new ContentValues();
cValue.put("namea","username1");
cValue.put("desc","1213232");
db.insert("tablea",null,cValue);
}
删除数据
private void delete(SQLiteDatabase db) {
String whereClause = "id=?";
String[] whereArgs = {String.valueOf(2)};
db.delete("tablea",whereClause,whereArgs);
}
修改数据update
private void update(SQLiteDatabase db) {
//实例化内容值 ContentValues values = new ContentValues();
//在values中添加内容
values.put("desc","abcaaaa");
//修改条件
String whereClause = "id=?";
//修改添加参数
String[] whereArgs={String.valuesOf(1)};
//修改
db.update("tablea",values,whereClause,whereArgs);
}
除了使用提供的方法外,还可以通过sql语句直接调用SQLiteDatabase的execSQL()方法来执行
private void insert(SQLiteDatabase db){
String stu_sql="insert into table1(namea,desca) values('23123','123123132165')";
//执行SQL语句
db.execSQL(sql);
}
private void update(SQLiteDatabase db){
//修改SQL语句
String sql = "update stu_table set desca = "asddsadsadsa" where id = 1";
//执行SQL
db.execSQL(sql);
}
5
.查询
在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体方法如下:
public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);
各个参数的意义:
table:表名称columns:列名称数组;selection:条件字句,相当于where;selectionArgs:条件字句,参数数组;groupBy:分组列
having:分组条件;orderBy:排序列;limit:分页查询限制;Cursor:返回值,相当于结果集ResultSet
Cursor是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等.
Cursor游标常用方法
下面就是用Cursor来查询数据库中的数据,具体代码如下:
private void query(SQLiteDatabase db) {
//查询获得游标
Cursor cursor = db.query ("usertable",null,null,null,null,null,null);
//判断游标是否为空
if(cursor.moveToFirst() {
//遍历游标
for(int i=0;i<cursor.getCount();i++){
cursor.move(i);
//获得ID
int id = cursor.getInt(0);
//获得用户名
String username=cursor.getString(1);
//获得密码
String password=cursor.getString(2);
//输出用户信息
System.out.println(id+":"+sname+":"+snumber);
}
}
}
SQLiteOpenHelper
该类是SQLiteDatabase一个辅助类。这个类主要生成一个数据库,并对数据库的版本进行管理。当在程序当中调用这个类的方法getWritableDatabase()或者 getReadableDatabase()方法的时候,如果当时没有数据,那么Android系统就会自动生成一个数据库。 SQLiteOpenHelper 是一个抽象类 实现里面的3个函数:
1.onCreate(SQLiteDatabase)
在数据库第一次生成的时候会调用这个方法
2. onUpgrade(SQLiteDatabase,int,int)
当数据库需要升级的时候,Android系统会主动的调用这个方法。一般我们在这个方法里边删除数据表,并建立新的数据表
3. onOpen(SQLiteDatabase):
打开数据库时的回调函数,一般在程序中不是很常使用。