andorid SQLite 的使用详解

andorid SQLite 的使用详解

1、创建数据库
a、编写一个类 DBHelper 继承 SQLiteOpenHelper。

b、重写 SQLiteOpenHelper的三个方法:onCreate(第一次创建的时候调用此方法),onUpgrade(更新的
时候调用此方法:参数newVersion 大于 oldBersion时调用),onOpen(每次打开数据库文件时调用)。

c、在 onCreate 方法中创建一个新的数据库文件:
    String sql = "create table person(pid integer primary key autoincrement,name varchar(64),address varchar(64))";
    db.execSQL(sql);

2、创建数据库的管理类,封装对数据库的增删查找操作。

对数据库进行操作有两种方法:

    1、通过SQLiteDatabase调用execSQL方法执行SQLite语言。
/**
     * 实现对数据库的添加 删除 修改
     * 
     * @param sql
     * @param bindArgs
     * @return
     */
    public boolean updataBySQL(String sql, Object[] bindArgs) {
        boolean falg = false;
        database = dbHelper.getWritableDatabase();
        try {
            database.execSQL(sql, bindArgs);
            falg = true;
        } catch (Exception e) {
            // TODO: handle exception
        }
        database.close();
        return falg;
    }

    /**
     * 单条记录查询
     * 
     * @param sql
     * @param selectionArgs
     * @return
     */
    public Map<String, String> queryBySQL(String sql, String[] selectionArgs) {
        database = dbHelper.getWritableDatabase();
        Map<String, String> map = new HashMap<String, String>();
        Cursor cursor = database.rawQuery(sql, selectionArgs);
        int cols_len = cursor.getColumnCount();// 列的个数
        while (cursor.moveToNext()) {
            for (int i = 0; i < cols_len; i++) {
                String cols_name = cursor.getColumnName(i);
                String cols_value = cursor.getString(cursor
                        .getColumnIndex(cols_name));
                if (cols_value == null) {
                    cols_value = "";
                }
                map.put(cols_name, cols_value);
            }
        }
        database.close();
        return map;
    }

    /**
     * 查找多条记录
     * 
     * @param sql
     * @param selectionArgs
     * @return
     */
    public List<Map<String, String>> queryMultiMaps(String sql,
            String[] selectionArgs) {
        database = dbHelper.getWritableDatabase();
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        Cursor cursor = database.rawQuery(sql, selectionArgs);
        int csls_len = cursor.getColumnCount();
        while (cursor.moveToNext()) {
  // 游标移动到下一个,不为0
            Map<String, String> map = new HashMap<String, String>();
            for (int i = 0; i < csls_len; i++) {
                String cols_name = cursor.getColumnName(i);
                String cols_value = cursor.getString(cursor
                        .getColumnIndex(cols_name));
                if (cols_value == null) {
                    cols_value = "";

                }
                map.put(cols_name, cols_value);
            }
            list.add(map);
        }
        database.close();
        return list;
    }
2、通过调用SQLiteDatabase子方法实现对数据库的编辑。
/**
     * 插入数据
     * 
     * @param table
     *            表名
     * @param nullColumnHack
     *            如果第三个参数values 为Null或者元素个数为0,
     *            由于Insert()方法要求必须添加一条除了主键之外其它字段为Null值的记录,为了满足SQL语法的需要,
     *            insert语句必须给定一个字段名,如:insert into person(name)
     *            values(NULL),倘若不给定字段名 , insert语句就成了这样: insert into person()
     *            values(),显然这不满足标准SQL的语法。对于字段名,建议使用主键之外的字段,如果使用了INTEGER类型的主键字段,
     *            执行类似insert into person(personid)
     *            values(NULL)的insert语句后,该主键字段值也不会为NULL。如果第三个参数values
     *            不为Null并且元素的个数大于0 ,可以把第二个参数设置为null。
     * @param values
     *            修改后的值 new一个ContentValues中,再添加
     * @return
     */
    public boolean insert(String table, String nullColumnHack,
            ContentValues values) {
        database = dbHelper.getWritableDatabase();
        boolean flag = false;
        long id = database.insert(table, nullColumnHack, values);
        flag = id > 0 ? true : false;
        database.close();
        return flag;
    }

    /**
     * 更新数据,修改数据 update person set name = ?, address=? where pid = ?
     * 
     * @param table
     *            表名
     * @param values
     *            对应的值
     * @param whereClause
     *
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值