在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。 SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。但有一种情况例外:定义为INTEGERPRIMARY
KEY的字段只能存储64位整数, 当向这种字段中保存除整数以外的数据时,将会产生错误。 另外,SQLite 在解析CREATETABLE 语句时,会忽略CREATETABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略name字段的类型信息:
CREATETABLE person (personidinteger primary key
autoincrement,name
varchar(20))
Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(insert)、查询(query)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。
android中提供了一个数据的辅助类SQLiteOpenHelper来获取数据的实例,此类为抽象类,我们需要继承这个类,并且重写其中onCreate和onUpdate方法,onCreate方法是在数据库实例创建的时候调用,在其中一般用来完成一些数据库的初始化工作,例如创建数据库表等。onUpdate方法是在数据库的版本发生变化的时候由系统自动的调用,在其中,主要完成一些数据库表的更新,例如字段的添加和删除。SQLiteOpenHelper的构造方法指定了数据库创建的上下文,数据库文件的名称,数据的使用的游标工厂,数据库的版本(SQLiteOpenHelper类没有定义默认的构造方法,因此我们需要在我们自定义类中定义构造方法,调用父类的构造方法,构造方法的参数第一个参数是上下文对象,第二个参数为我们创建的数据库名称,这个我们自定义,第三个参数是游标工厂对象,如果设定为空置那么将使用系统默认的游标工厂对象,第四个参数是版本号,推荐从1开始。
public class DBOpenHelper extends SQLiteOpenHelper {
public DBOpenHelper(Context context) {
super(context, "contacts", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table person(name varchar(10),phone char(10));");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
通过DBOpenHelper的实例调用getWritableDatabase()方法和getReadableDatabase()可以获取数据库对象实例,通过数据库实例可以实现数据的增删盖改查,下面代码实现了将对person表中的数据增删改查
public class PersonDAO {
private DBOpenHelper dbhelper;
public PersonDAO(DBOpenHelper dbhelper){
this.dbhelper = dbhelper;
}
public void save(Person person){
SQLiteDatabase db = dbhelper.getWritableDatabase();
db.execSQL("insert into person values(?,?)", new String[]{person.getName(),person.getPhone()});
}
public void delete(String name){
SQLiteDatabase db = dbhelper.getWritableDatabase();
db.execSQL("delete from person where name = ?", new String[]{name});
}
public void update(Person oldperson,Person newPerson){
SQLiteDatabase db = dbhelper.getWritableDatabase();
db.execSQL("update person set name = ?,phone = ? where name = ?", new String[]{newPerson.getName(),newPerson.getPhone(),oldperson.getName()})
; }
public Person find(String name){
Person person = null;
SQLiteDatabase db = dbhelper.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from person where name = ? ", new String[]{name});
while(cursor.moveToNext()){
String personName = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
person = new Person(personName,phone);
}
return person;
}
}
使用getWritableDatabase()方法和getReadableDatabase()两个方法需要注意的地方:
首先,两种方法的区别在于前一种方法是使用读写的方式打开数据库,而后一种方法是以只读的方法打开数据,在前一种方法中,如果数据库磁盘占满了,那么以读写的方式打开数据库则会发生异常,需要用只读的方式来打开数据库,因此在只做查询处理的情况下,我们一般采用只读的方式打开数据库。
其次,这两个方法具有缓存的特点,两次通过同一个对象的getWritableDatabase()(或者是getReadableDatabase())的方法获取的数据库操作实例是同一个对象,但是前提是第一次获取后的数据库操作实例没有关闭。
分享到:
相关推荐
它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 为什么要用 ...
资源名称:android中sqlite数据库的创建以及增删改查 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
Android Studio SQLite数据库使用
Android使用SQLite数据库进行增删改查详细案例...
Android之Sqlite数据库操作实例
Android 开发中使用 SQLite 数据库 简介: SQLite 是一款非常流行的嵌入式数据库,它支持 SQL 查询,并且只用很少的内存。Android 在运行时集成了 SQLite,所以每个 Android 应用程序都可以使用 SQLite 数据库。...
一个android读取sqlite数据库的数据并用listview显示demo,如有问题及时提醒。
Android 数据库SQLite 详解,简单学好SQLite
该代码实现了android的sqlite数据库的加密和解密
Sqlite数据库学习总结,希望能有帮助
android对sqlite数据库的操作
前情提要:Android 数据库(SQLite) 【简介、创建、使用(增删改查、事务、实战演练)、数据显示控件(ListView、Adapter、实战演练)】 https://blog.csdn.net/weixin_44949135/article/details/105955663 Android ...
Android 操作 SQLite数据库 Android 操作 SQLite数据库 Android 操作 SQLite数据库
android studio SQLite数据库的创建、增删改查操作 SharedPreferences存储数据的方法 掌握文
Android实验报告Sqlite数据库操作.pdf
android中SQLite数据库中用insert同时插入多条记录的方法和效率比较
Android 操作 sqlite 数据库增加修改删除 Android 操作 sqlite 数据库增加修改删除 Android 操作 sqlite 数据库增加修改删除
Android连接sqlite数据库进行增删改查和事务操作
基于Android的SQLite数据库操作Demo
Android操作SQLite数据库Demo,实现对数据库的创建,升级,增删查改,用子线程做,避免主线程阻塞。(用Android Studio打开)