Android 数据库 - SQLite

对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。

从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧。

1.创建表
2.表格是否存在
3.删除表格
4..增删改查
5.忽略大小写


1.创建表

 public static final String KEY_SQL_WFTT = "CREATE TABLE " + KEY_TABLE_NAME + " (" +
            "id INTEGER PRIMARY KEY AUTOINCREMENT," +
            KEY_ORDER + " VARCHAR(20)," +
            KEY_MATERIEL + " VARCHAR(20), " +
            KEY_NAME + " VARCHAR(20), " +
            KEY_SYS_QTY + " VARCHAR(9), " +
            KEY_QTY + " VARCHAR(9), " +
            KEY_USERNAME + " VARCHAR(20), " +
            KEY_STATE + " VARCHAR(1), " +
            KEY_DATE + " VARCHAR(10), " +
            KEY_TIME + " VARCHAR(8) " +
            ")";

  db.execSQL(KEY_SQL_WFTT);

注:VARCHAR 不会因为某个字符以“0”开头而省略“0”.

2.查询表是否存在

     /**
     * 表格是否存在
     *
     * @return
     */
    public boolean hasTable() {
        List<String> tab_names = new ArrayList<>();
        Cursor cursor = db.rawQuery("select name from sqlite_master  where type='table';", null);
        while (cursor.moveToNext()) {
            String name = cursor.getString(0);
            tab_names.add(name);
        }
        return tab_names.contains(KEY_TABLE_NAME);
    }
3.删除表格
    /**
     * 删除表格
     */
    private void deleteTable() {
        if (hasTable()) {
            db.execSQL("DROP TABLE " + KEY_TABLE_NAME);
        }
    }

4.增删改查

4.1开启事务插入多笔数据
    /**
     * 开启事务插入多笔数据
     */
    public void insertALLData(List<Info> infos) {
        db.beginTransaction();
        try {
            for (Info info : infos) {
                insertData(info);
            }
            db.setTransactionSuccessful();
        } catch (Exception e) {
            e.printStackTrace();
            db.endTransaction();
        }
        db.endTransaction();
    }
4.2 插入数据
/**
     * 插入单笔数据
     *
     * @param info
     */
    public void insertData(Info info) {
        ContentValues cv = new ContentValues();
        cv.put(KEY_USERNAME, info.getUsername());
        db.insert(KEY_TABLE_NAME, null, cv);
    }
4.3 删除数据
    /**
    *删除数据
    */
    public void deleteData(int id) {
    //删除条件
    String whereClause = "id=?";
    //删除条件参数
    String[] whereArgs = {String.valueOf(id)};
    //执行删除
    db.delete(KEY_TABLE_NAME,whereClause,whereArgs);
}

4.4 修改数据

 /**
     * 修改数据
     *
     * @param materiel
     * @param qty
     * @param status
     * @return
     */
    public int updateQty(String materiel, int qty, int status) {
        //修改条件
        String whereClause =  "materiel = ? ;";
        ContentValues cv = new ContentValues();
        cv.put(KEY_DATE, TimeUtils.getDate());
        cv.put(KEY_TIME, TimeUtils.getTime());
        cv.put(KEY_USERNAME, SP.newInstance().getValue("username"));
        cv.put(KEY_STATE, status);
        cv.put(KEY_QTY, qty);
        return db.update(KEY_TABLE_NAME, cv, whereClause, new String[]{materiel});
    }
4.5 查询所有数据
/**
     * 查询 info 所有数据
     *
     * @return
     */
    public List<Info> queryALLInfoData() {
        List<Info> infos = new ArrayList<>();
        Cursor cursor = db.query(KEY_TABLE_NAME, null, null, null, null, null, null);
        while (cursor.moveToNext()) {
            Info info = new Info();
            info.setUsername(cursor.getString(cursor.getColumnIndex(KEY_USERNAME)));
            infos.add(info);
        }
        return infos;
    }
4.6 根据条件查询数据
  /**
     * 校验扫描数据  物料号
     *
     * @return
     */
    public boolean checkMateriel(String materiel) {
        String sql = "SELECT * from " + KEY_TABLE_NAME + " WHERE " + KEY_MATERIEL + " = ? ";
        Cursor cursor = db.rawQuery(sql, new String[]{materiel});
        return cursor.moveToNext();
    }

5.忽略大小写

方法一:使用大小写转换函数LOWER、UPPER(忽略大小写使用的为函数,影响查询速度,避免使用)

SELECT * FROM User WHERE LOWER(User) = ‘zhangsan′;

方法二:在进行比较时强制声明不区分大小写(特定对大小写忽略)

SELECT * FROM User WHERE User= ‘zhangsan′ COLLATE NOCASE;

方法三:创建表时声明该列不区分大小写(查询不变,针对任何时候忽略大小写)

CREATE TABLE User (User VARCHAR(20) COLLATE NOCASE);

猜你喜欢

转载自blog.csdn.net/weixin_39923324/article/details/80061770