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

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


【玩转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来查看结果

插入数据

发布了134 篇原创文章 · 获赞 73 · 访问量 63万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章