Android 数据库(2)-----SQLite使用

本文介绍SQLite的基本操作,包括数据库和表的创建、数据的增删改查等,并通过实例演示如何在Android环境中使用SQLiteOpenHelper进行数据库管理和操作。

SQLite 使用


1、SQLite的SQL语句

SQLite引擎和一般的client/service数据库管理系统不同,没有一个应用程序与之通信的独立进程。SQLite库连接到程序中,成为了程序的一部分,应用程序可以直接使用api访问SQLite的功能可以减少延迟(没有进程间通信)

SQL语句

1.创建数据库
    sqlite3 name.db
2.创建表
    create [temp | temporary] table 表名 (字段1 类型 约束条件 , ... , 字段n 类型);
SQLite数据类型有 Null , Integer ,REAL(浮点数) , TEXT(字符) , BLOB  约束条件有  NOT NULL(非空) , UNIUE(唯一),PRIMARY KEY(主键),FOREIGN KEY(外键),CHECH(条件检查),DEFAULT(默认值)
create table stuents (
    id integer primary key autoincrement,  //主键 自动增长
    name vchar(20) check(length(name) > 3), //条件检查名字字符大于3
    tel_no vchar(11) not null unique, //不为空 ,电话号唯一
    cls_id integer not null, // 班级号不为空
);
3.插入数据
 insert into 表名 (字段列表) values(与字段列表对应的值)
4.查询数据
select [distinct] columns from table  //distinct 去重
    where predictatein  //条件限制
    group by columns    
    having predicate    
    order by columns    //排序
    limit count,offset;  //数量限定
select * from book limit 1 offset 2; //得到ID为3的数据
select * from book where name like "l%" //找到名字以l开头的
5.更新数据
update table set update_list where predicate;
update book set name='bean' where name='cat'; //名字为cat的数据改为bean
6.删除数据
delete from table where predicate

Linux下使用sqlite实践

chenqain@chenqain-PC:/home/sqlite/test$ sqlite3 book.db 
SQLite version 3.21.0 2017-08-03 15:50:10
Enter ".help" for usage hints.
sqlite> CREATE TABLE book (name text , age integer);
sqlite> insert into book values('leo',18);
sqlite> insert into book values('cat',18);
sqlite> select * from book where name='leo';
leo|18
sqlite> 

2.SQLite的使用

2.1创建数据库

Android提供了SQLiteOpenHelper,我们可以很方便的使用它来进行数据库的创建和升级

public class SQLDataBaseHelper extends SQLiteOpenHelper {
    private static final String TAG = "SQLDataBaseHelper";
    //建表语句
    public static final String CRATE_BOOK = "create table book(" +
            "id integer primary key autoincrement," +
            " author text," +
            "price real," +
            "pages integer," +
            "name text)";
    //表的名字        
    public static final String NAME = "Book.db";
    //@parm name 数据库名字 @parm version 版本号 @parm factory 设为null
    public SQLDataBaseHelper(Context context, String name, String factory, int version) {
        super(context, name, factory, version);
    }

    //当数据库不存在时执行
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CRATE_BOOK) ;  //创建数据库
        Log.e(TAG, "onCreate: " + "create table ok" );
    }

    //在升级时使用,只有改变版本号就会执行,在里面先drop掉前面的表然后创建新的表
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}
2.2.CURD
SQLDataBaseHelper dbHelper = new SQLDataBaseHelper(this , "Book.db" , null , 1);
//使用下面的方法当发现没有Book.db就会执行SQLDataBaseHelper的onCreate()方法创建出数据库
SQLiteDatabase db = dbHelper.getWritableDatabase();

Create

     /**
     *insert(String table, String nullColumnHack, ContentValues values)
     * @parm table 表名
     * @parm values 数据的一个包装体
     **/
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("name","a dog name bean");
    values.put("author","leo");
    values.put("price",12);
    values.put("pages",345);
    db.insert("Book",null,values);

Update

    /**
     *update(String table, ContentValues values, String whereClause, String[] whereArgs
     * @parm table 表名  @value 要更新的值  
     * @parm whereClause 列名约束条件表达式 @parm whereArgs 具体约束值
     */
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("price",18);
    db.update("Book",values1,"author = ?",new String[]{"leo"});

Retrieve

    SQLiteDatabase db3 = dbHelper.getWritableDatabase();
    //查询了所有数据
    Cursor cursor = db3.query("Book",null,null,null,null,null,null);

Delete

    SQLiteDatabase db2 = dbHelper.getWritableDatabase();
    db2.delete("Book","id = ?",new String[]{"1"});

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值