【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库

来源:互联网 发布:丹尼斯·约翰逊数据 编辑:程序博客网 时间:2024/05/17 03:59

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53316096
本文出自【DylanAndroid的博客】


  • 【玩转SQLite系列】文章目录
    • 【玩转SQLite系列】(一)初识SQLite,重拾sql语句
    • 【玩转SQLite系列】(二)SQLite创建和打开数据库的三种方式
    • 【玩转SQLite系列】(三)通过sql语句操作SQLite数据库
    • 【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库
    • 【玩转SQLite系列】(五)SQLite数据库优化
    • 【玩转SQLite系列】(六)SQLite数据库应用案例实现历史搜索记录
    • 【玩转SQLite系列】(七)SQLite数据库轻量级ORM操作数据库工具类

【玩转SQLite系列】(四)通过Android提供的API操作SQLite数据库

在上一篇【玩转SQLite系列】(三)通过sql语句操作SQLite数据库中介绍了用sql语句来操作SQLite数据库,那么,就需要用户必须要由很熟练的sql语句拼写和sql语法的熟练掌握。
其实,在Android里面提供了相应的API来操作数据库,即使对sql不是很熟练,也能够很好的去操作SQLite数据库。
这篇文章介绍一下通过Android提供的API对数据库的以下操作:

1.创建表

2.删除表

3.新增数据

4.修改数据

5.删除数据

6.查询数据

0.创建或打开一个数据库

  • 在SD卡的sqlite文件夹下创建和打开一个info.db数据库
  File dataBaseFile = new File(Environment.getExternalStorageDirectory() + "/sqlite", Contacts.DATABASE_NAME);        if (!dataBaseFile.getParentFile().exists()) {            dataBaseFile.mkdirs();        }        sqLiteDatabase = SQLiteDatabase.openOrCreateDatabase(dataBaseFile, null);
  • 通过adb shell命令即可看到数据库文件。

cd storage/emulated/legacy/sqlite

命令图

1.创建表

/**     * 1.创建数据表user     * 表名 user     * *数据表user表结构字段     * 主键:id     * 名字:name     * 年龄:age:     *     * @param v     */    public void create(View v) {        String sql = "CREATE TABLE " +                "IF NOT EXISTS " +                "user(" +                "id Integer PRIMARY KEY AUTOINCREMENT," +                "name varchar," +                "age Integer)";        sqLiteDatabase.execSQL(sql);    }

我们通过 (sqlite3 info2).命令打开数据库,再执行(.table)命令查看数据表

创建表格图

2.删除表格

    /**     * 2.删除数据表user     *     * @param v     */    public void drop(View v) {        String sql = "DROP TABLE " +                "IF EXISTS " +                "user";        sqLiteDatabase.execSQL(sql);    }

3.插入(新增)数据

    /**     * 3.给user表中新增一条数据     * <p>     * long insert(String table, String nullColumnHack, ContentValues values)     * 第一个参数:数据库表名     * 第二个参数:当values参数为空或者里面没有内容的时候,     * insert是会失败的(底层数据库不允许插入一个空行),     * 为了防止这种情况,要在这里指定一个列名,     * 到时候如果发现将要插入的行为空行时,     * 就会将你指定的这个列名的值设为null,然后再向数据库中插入。     * 第三个参数:要插入的值     * 返回值:成功操作的行号,错误返回-1     *     * @param v     */    public void insert(View v) {        String table = "user";        ContentValues contentValues = new ContentValues();        contentValues.put("name", "张三");        contentValues.put("age", 25);        long num = sqLiteDatabase.insert(table, null, contentValues);        if (num == -1) {            Toast.makeText(this, "插入失败", Toast.LENGTH_SHORT).show();        } else {            Toast.makeText(this, "成功插入到第" + num + "行", Toast.LENGTH_SHORT).show();        }    }

我们通过select * from user;命令去查看一下数据库中内容

插入数据

成功插入了两条数据

4.修改数据

  /**      * 4.修改user表中id为2的名字改成“李四”      * <p>      * int update(String table, ContentValues values, String whereClause, String[] whereArgs)      * 第一个参数:表名      * 第二个参数:所要修改该的字段对应的值      * 第三个参数:修改的条件字段      * 第四个参数:修改的条件字段对应的值      * 返回值:影响的行数      *      * @param v      */     public void update(View v) {         String table = "user";         ContentValues contentValues = new ContentValues();         contentValues.put("name", "李四");         String where = "id=2";         /**          * 方式一          */         sqLiteDatabase.update(table, contentValues, where, null);         /**          * 方式二          */         where = "id=?";         String[] whereArgs = new String[]{"2"};         int num = sqLiteDatabase.update(table, contentValues, where, whereArgs);         Toast.makeText(this, "修改了" + num + "行", Toast.LENGTH_SHORT).show();     }

我们来查看一下修改的结果

插入数据

成功将id为2的姓名修改成了李四

5.删除数据

 /**     * 5.删除user表中id为2的记录     * <p>     * int delete(String table, String whereClause, String[] whereArgs)     * 第一个参数:删除的表名     * 第二个参数:修改的条件的字段     * 第三个参数:修改的条件字段对应的值     * 返回值:影响的行数     *     * @param v     */    public void delete(View v) {        String table = "user";        String where = "id=2";        sqLiteDatabase.delete(table, where, null);        where = "id=?";        String[] whereArgs = new String[]{"3"};        int num = sqLiteDatabase.delete(table, where, whereArgs);        Toast.makeText(this, "删除了" + num + "行", Toast.LENGTH_SHORT).show();    }

我们来查看一下删除的结果

插入数据

成功将id为2的数据删除

6.查询数据

   /**     * 6.查询数据     * <p>     * Cursor query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having,String orderBy)     * 第一个参数:表名     * 第二个参数:要查询的字段名     * 第三个参数:要查询的条件字段     * 第四个参数:要查询的条件字段对应的值     * 第五个参数:分组的字段     * 第六个参数:筛选的字段     * 第七个参数:排序的字段     * 返回值:游标     *     * @param v     */    public void query(View v) {        String table = "user";        Cursor cursor = sqLiteDatabase.query(table, null, null, null, null, null, null);        if (cursor == null) {            return;        }        while (cursor.moveToNext()) {            Log.d(Contacts.TAG, "id=" + cursor.getInt(0) + ",name=" + cursor.getString(1) + ",age=" + cursor.getInt(2));        }        cursor.close();    }

我们通过Log来查看结果

插入数据

2 0
原创粉丝点击