SQLiteDatabase学习

作者: 奔跑的佩恩 | 来源:发表于2017-11-15 13:55 被阅读74次

    学习SQLiteDatabase之前我们需要了解的是:

    • SQLiteDatabase其实是可以直接在Activity中代码创建的
    • db文件其实就是一个文件(以单个文件存在),当找到db文件名路径的时候,可以用file的delete方法删除数据库
    • Android的SQLiteDatabase最大可存储 2TB的数据
    • db文件默认存储路径为 /data/data/your.app.package/databases/your-db-name

    1.sqlite的sq语句操作

    这里对sq语句只做简单的操作

    1.1 创建表
        //查询数据库文件user.db,若文件不存在会自动创建
            SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
            String createTable = "CREATE TABLE IF NOT EXISTS user(_id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n" +
                    "                                name text,\n" +
                    "                                sex text,\n" +
                    "                                age integer);";
            //创建表
            db.execSQL(createTable);
    

    以上代码直接在MainActivity中进行就可以。

    1.2 插入单条数据
    //插入数据
    String sql1 = "INSERT INTO user(name,sex,age) VALUES ('张三','男',18);";
    db.execSQL(sql1);
    
    1.3 查询表
    //表查询
            String sql3 = "SELECT * FROM user;";
            Cursor cursor = db.rawQuery(sql3, null);
            if (cursor != null) {
                while (cursor.moveToNext()) {
                    int _id=cursor.getInt(cursor.getColumnIndex("_id"));
                    String name=cursor.getString(cursor.getColumnIndex("name"));
                    String sex=cursor.getString(cursor.getColumnIndex("sex"));
                    int age=cursor.getInt(cursor.getColumnIndex("age"));
    
                    LogUtil.e(SqliteActivity.class, "====_id=" + _id+"  name="+name+"  sex="+sex+"  age="+age);
                }
                cursor.close();
            }
    

    需要注意的是,每次查询完后都需要,用来减少资源浪费

    cursor.close();
    

    在app退出程序的时候,要关闭数据库

    db.close();
    

    2.sqlite的java语句操作

    2.1 创建表

    创建语句仍是用sq语句操作

       //查询数据库文件user.db,若文件不存在会自动创建
            SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
            String createTable = "CREATE TABLE IF NOT EXISTS user(_id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n" +
                    "                                name text,\n" +
                    "                                sex text,\n" +
                    "                                age integer);";
            //创建表
            db.execSQL(createTable);
    
    2.2 插入数据
            //插入
            ContentValues values=new ContentValues();
            values.put("name","李四");
            values.put("sex","男");
            values.put("age","28");
            long rowId=db.insert("user",null,values);
    

    继续插入数据的时候,可以新建一个ContentValues,也可以将共用之前用的ContentValues,但是要clear,如下:

            values.clear();
            values.put("name","李平");
            values.put("sex","女");
            values.put("age","26");
            db.insert("user",null,values);
    
    2.3 更新数据
            //更新
            values.clear();
            values.put("sex","男");
            //将 _id大于1的人的性别改成男
            db.update("user",values,"_id>?",new String[]{"1"});
    
    2.4 删除数据
    //删除所有名字中带平的人
    db.delete("user","name like ?",new String[]{"%平%"});
    
    2.5 查询数据
    Cursor cursor=db.query("user",null,"_id>?",new String[]{"0"},null,null,"name");
            if (cursor != null) {
                //查询所有字段名
                String ColumnNames[]=cursor.getColumnNames();
                while (cursor.moveToNext()){
                    for(String columnName:ColumnNames){
                        LogUtil.e(SqliteActivity.class, "====value="+cursor.getString(cursor.getColumnIndex(columnName)));
                    }
                }
                cursor.close();
            }
    

    注意上面查询后要关闭cursor
    最后在app退出程序的时候,要关闭数据库

    db.close();
    

    ok,今天关于Android数据库的使用就降到这里吧,谢谢!

    相关文章

      网友评论

        本文标题:SQLiteDatabase学习

        本文链接:https://www.haomeiwen.com/subject/nkkxvxtx.html