【Android开发--新手必看篇】SQLite数据库

    技术2022-07-11  87

    Android笔记

    ​ ——SQLite数据库 【若对该知识点有更多想了解的,欢迎私信博主~~】

    SQLite数据库:SQLite

    SQLite数据库是一款轻量级的数据库,它的运算速度特别快,占用资源特别少,通常指需要几百KB的内存就足够了。因而特别适合在移动设备上使用。
    特点:
    轻量级不需要“安装”单一文件跨平台/可移植性开源
    数据类型:
    INTEGER:整数REAL:浮点数CHAR(n):长度固定为n的字串,n不能超过 254VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000TEXT: 文本字符串BLOB:二进制数据块Date:年份、月份、日期Time:小时、分钟、秒timestamp: 年、月、日、时、分、秒、毫秒
    创建数据库:

    创建一个继承自SQLiteOpenHelper的工具类:

    public class SqlUtile extends SQLiteOpenHelper { // 重写构造方法 public SqlUtile(Context context, String name, int version) { // 【上下文】、【数据库名称.db】、【默认工厂】、【版本号】 super(context, name, null, version); } // 重新写onCreate()方法 /* * 第一次创建数据库时回调该方法 * 可以生成表结构,并添加一些初始化数据 * */ @Override public void onCreate(SQLiteDatabase db) { // 初始化建表 db.execSQL(【建表语句】); // 添加初始数据 db.execSQL(【添加语句】); } // 当数据库版本更新时回调该方法 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }

    举例

    package com.example.sirl.demo0711.work3; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.support.annotation.Nullable; public class SQLite extends SQLiteOpenHelper { public SQLite(Context context) { super(context, "user", null, 1); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL("Create table if not exists table1(id Integer primary key,user varchar(20),pwd varchar(20))"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
    使用:

    新建数据库

    //创建数据库对象,若不存在则新建,若不存在则复用 SQLite sqLite = new SQLite(getApplicationContext()); // 以何种方式打开数据库 // getReadableDatabase() // 以读写的方式打开数据库对应的SQLiteDatabase对象,如果数据库磁盘满了,则只能读不能写,并且抛出异常 // getWritableDatabase() // 以写的方式打开数据库对应的SQLiteDatabase对象,如果数据库磁盘满了,则返回打开失败,继而以只读方式打开数据库 SQLiteDatabase db = sqLite.getWritableDatabase();

    //第一种方式 ContentValues cv = new ContentValues(); cv.put("user", "bbb"); cv.put("pwd", "123456"); db.insert("user", null, cv); //第二种方式 db.execSQL("insert into user(user,pwd) VALUES(?,?)", new Object[]{"bbb", "123456"});

    //第一种方式 String whereClause2="user=?"; String[] whereArgs2={String.valueOf("bbb")}; //当多个条件时 String whereClause2="user=? and pwd=?"; String[] whereArgs2={String.valueOf("bbb"),String.valueOf("123456")}; db.delete("user",whereClause2,whereArgs2); //第二种方式 db.execSQL("delete from user where user='bbb' and pwd='123456'");

    //第一种方式 ContentValues cv = new ContentValues(); cv.put("user","bbb"); String whereClause="user=?"; String[] whereArgs={"aaa"}; //当多个条件时 cv.put("user","bbb"); String whereClause="user=? and pwd=?"; String[] whereArgs={"aaa","123456"}; db.update("user",cv,whereClause,whereArgs); //第二种方式 db.execSQL("update user set user=? where user='aaa' and pwd='123456'",new Object[]{"bbb"});

    //第一种方式 Cursor cursor=db.query("user",new String[]{"user","pwd"},null,null,null,null,null,null); //第二种方式 Cursor cursor1=db.rawQuery("select user,pwd from user",null); if (cursor.moveToFirst()){ do{ Log.e("user",""+cursor.getString(cursor.getColumnIndex("user"))); }while (cursor.moveToNext()); }
    注:1.查找数据库位置(打开SDK-AS右下角Device File Explorer-data-data-自己的项目名称-databases),打开可以用SQLiteSpy打开。
    2.SQLite为独立的数据库,有自己的语法和规范,但也符合通用规范
    Processed: 0.012, SQL: 9