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

转载请注明出处: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表中新增一条数据
     * 

* 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的名字改成“李四”
      * 

* 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的记录
     * 

* 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.查询数据
     * 

* 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来查看结果

你可能感兴趣的:(Android,玩转SQLite)