Android开发——SQLite数据库的使用
文章目录:
一、认识SQLite
1、SQLite的特性
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。
SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite是直接访问其存储文件。
SQLite不需要额外的配置以及轻量化是最大的优点
2、SQLite的适用场景
(1)嵌入式设备:它可以在资源有限的设备上运行,不需要独立的服务器。
(2)测试和原型开发:SQLite可以快速创建和测试应用程序的原型,因为它不需要安装或配置服务器。
二、SQLite在Android开发中的应用
在Android中应用程序需要处理大量并发连接、高并发读写等高负载场景,SQLite可能会表现出性能瓶颈,不如传统的关系型数据库管理系统(RDBMS),因此不建议在这些场景中使用SQLite。
所以SQLite可以用在单机程序上,不适用联网数据。
1、工具类的编写
先继承系统给的SQLiteOpenHelper类,建立一个表。这里我建立了一个username和password。
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String USER="create table user("+"id integer primary key autoincrement,"+"username text,"+ "password text)";
private Context mContext;
public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,int vertion){
super(context,name,factory,vertion);
mContext=context;
}
@Override
public void onCreate(SQLiteDatabase db){
System.out.println(USER);
db.execSQL(USER);
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){
}
}
在onCreate方法里面,防止第一次点击的时候,没有user.db这个文件,因此写了一个创建db文件的代码。
2、信息的插入
我们向表中插入数据,我们需要一行插入进表,这样数据写入更有效率。
首先我们需要先定义一个容器对象,用于储存多条信息。
ContentValues values=new ContentValues();
values.put("username","lemon");
values.put("password","123456");
.put()函数中,第一个参数是表头的名称,第二个参数为输入的值。
在插入数据之前,需要先声明一个SQLite的对象。此处采用.getWritableDatabase()方法指以写的方式打开数据库。同理以读的方式打开数据库为.getReadableDatabase()
SQLiteDatabase db=dbHelper.getWritableDatabase();
当需要组装的数据输入完成后,就可以进行下一步插入了。这里使用SQLite的命令insert进行操作。
db.insert("user",null,values);
.insert()函数中第一个数据为表的名称,最后一个为内容。
最后清空values容器对象中的数据即可。
values.clear();
完整代码:
SQLiteDatabase db=dbHelper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("username","lemon");
values.put("password","123456");
db.insert("user",null,values);
values.clear();
3、信息的读取
当我们需要实现登录功能,此时需要从数据库中读取内容。我们先需要建立一个数据库对象,以读的方式打开,并指定数据库的位置。
SQLiteDatabase db=dbHelper.getReadableDatabase();
Cursor cursor=db.query("user",null,null);
.query()函数第一个参是表名,第二个是第一个表头,第三个是第二个表头。当表头为null的时候为全部读取。
读取出来的内容也需要一个临时存储,用于用户输入的进行比较。
String name=cursor.getString(cursor.getColumnIndex("username"));
//比对用户信息
if (name.equals(user)){
String ps=cursor.getString(cursor.getColumnIndex("password"));
if (ps.equals(password)){}
其中.getColumnIndex()函数是在读取指定的表头下内容。