Android开发——SQLite数据库的使用

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()函数是在读取指定的表头下内容。

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃柠檬的天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值