初识Sqlite数据库

#。# Sqlite ——我以前想用Sqlite 的时候看了几眼嫌太繁琐  然后滚去用的第三方的云数据库(好了 现在我又滚回来看Sqlite了)

嗯 先看下什么是Sqlite(以下来自百度)

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

嗯  简单的说 Sqlite 是一个 嵌入式 轻量级的数据库


QwQ Sqlite使用后会存储到哪里呢?

QwQ  私有目录下的databases 中


了解下以后 我们看下如何使用Sqlite


SqliteOpenHelper (记住这个类

 创建数据库的步骤

1.创建一个类 继承 SqliteOpenHelper,需要添加构造方法,实现两个方法 oncreate,onupgrade


public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

看下构造方法中 的参数

Context:上下文对象 这个一般不用多说了吧

name:数据库文件的名称

factory:用来创建cursor对象 默认值为null

version:数据库的版本号 从1开始

简单说下onCreate 方法(这个方法是在数据库第一次被创建的时候调用的,适合做表结构的初始化)

SQLiteDatabase db:可以用来执行sql语句

onUpgrade方法(当数据库版本号发生改变的时候会被执行,(版本号发生改变在android4.0以后只能由低版本升级到高版本不能反过来)一般用来做表结构的修改)

SQLiteDatabase db:可以用来执行sql语句

oldVersion: 老的版本号

newVersion:新的版本号


我们把public void onCreate(SQLiteDatabase db)这个方法单拿出来 看看里面到底需要写什么东西

  @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20))");
    }
是不是很简单呢·? 这里 execSQL 方法是用来执行sql语句的 但是 execSQL 没有返回值 没有返回值 没有返回值QwQ

sql语句 就是创建一个表 有两列一个是_id int 型(什么 你问我这句话里没有int`` 在Sqlite中 是没有int 但是有integer 这两个+。+ 差不多吧)自动增长 并设置为主键 和一个varchar 类型的name

好了 现在我们创建好了一个表 表里有2列 一个是_id 一个是name

嗯 还没有创建好(我忘了一个很重要的事情)

还没有调用(现在只是写了一个类 这个类可以创建一个数据库)其实也不难

 Context mContext = this;
        //创建一个帮助类
        DBHelper dbHelper = new DBHelper(mContext);
        // 通过getReadableDatabase 方法来初始化数据库的创建
        SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
好了 现在创建好了一个表

数据库还有增删改查 对不对~创建好了数据库 反正不是去瞪眼看的

创建InfoDao 类 来写 增删改查

public class InfoDao {

    private final DBHelper dbHelper;

    public InfoDao(Context mContext) {
        dbHelper = new DBHelper(mContext);
    }
	//增
    public void add(InfoBean bean) {
        //执行sql语句需要sqliteDatabase对象
        //调用getReadableDatabase方法,来初始化数据库的创建
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        //sql:sql语句,  bindArgs:sql语句中占位符的值
        db.execSQL("insert into info(name,phone) values(?,?);", new Object[]{bean.name, bean.phone});
        //关闭数据库对象
        db.close();
    }
	//删
    public void del(String name) {
        //执行sql语句需要sqliteDatabase对象
        //调用getReadableDatabase方法,来初始化数据库的创建
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        //sql:sql语句,  bindArgs:sql语句中占位符的值
        db.execSQL("delete from info where name=?;", new Object[]{name});
        //关闭数据库对象
        db.close();

    }
	//改
    public void update(InfoBean bean) {
        //执行sql语句需要sqliteDatabase对象
        //调用getReadableDatabase方法,来初始化数据库的创建
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        //sql:sql语句,  bindArgs:sql语句中占位符的值
        db.execSQL("update info set phone=? where name=?;", new Object[]{bean.phone, bean.name});
        //关闭数据库对象
        db.close();

    }
	//查
    public void query(String name) {
        //执行sql语句需要sqliteDatabase对象
        //调用getReadableDatabase方法,来初始化数据库的创建
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        //sql:sql语句,  selectionArgs:查询条件占位符的值,返回一个cursor对象
        Cursor cursor = db.rawQuery("select _id, name,phone from info where name = ?", new String[]{name});
        //解析Cursor中的数据
        if (cursor != null && cursor.getCount() > 0) {//判断cursor中是否存在数据

            //循环遍历结果集,获取每一行的内容
            while (cursor.moveToNext()) {//条件,游标能否定位到下一行
                //获取数据
                int id = cursor.getInt(0);
                String name_str = cursor.getString(1);
                String phone = cursor.getString(2);
                System.out.println("_id:" + id + ";name:" + name_str + ";phone:" + phone);
            }
            cursor.close();//关闭结果集

        }
        //关闭数据库对象
        db.close();


    }
}


使用SqliteDatebase对象调用execSql()做增删改,调用rawQuery方法做查询。

因为execSql()方法没有返回值 所以最多只能进行增删改 但不能执行查询


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值