Android 通过纯SQL语句操作SQLite完整示例(CRUD)

示例代码如下:这里用纯SQL实现了数据库的创建、建表、插入、修改、查询、删除等全部操作。并提供了两种不通过SQLiteOpenHelper类进行数据库创建或打开的操作方法和说明。

这里有一个注意事项需要说明:

(因为安卓平台execSQL一次只能执行一条语句,不支持以分号分隔的多条语句一次性提交,如果多条语句拼接只会执行第一条,要执行多条只能通过数组循环来实现。别无它法,我也是想不明白为什么要这样,SQLite本身是支持多条同时执行的)
        // 创建数据库
        String dbFileName= Environment.getDataDirectory().getAbsolutePath() + "/data/" + getPackageName() + "/databases/test.db";
        // SQLiteDatabase.openOrCreateDatabase方式打开或创建数据库 特点:可以指定数据库文件的路径
        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFileName, null);
        // Context.openOrCreateDatabase方式打开或创建数据库,特点:可以指定数据库文件的操作模式,默认建在/data/user/...路径下
        // SQLiteDatabase db = this.openOrCreateDatabase("test.db",MODE_PRIVATE, null);

        // 创建表
        String createTableSql = "CREATE TABLE IF NOT EXISTS user(" +
                "id INTEGER PRIMARY KEY AUTOINCREMENT," +
                "name TEXT," +
                "age INTEGER)";
        db.execSQL(createTableSql);

        // 插入数据(安卓execSQL一次只能执行一条语句,不支持以分号分隔的多条语句一次性提交,只会执行第一条)
/*
        StringBuilder insertSql=new StringBuilder();
        insertSql.append("INSERT INTO user(name, age) VALUES('Tom', 18); ");
        insertSql.append("INSERT INTO user(name, age) VALUES('Crystal', 29); ");
        insertSql.append("INSERT INTO user(name, age) VALUES('Overflow', 22); ");
        Log.e("MainActivity",insertSql.toString());
        db.execSQL(insertSql.toString());
*/

        List<String> list= new ArrayList<>();
        list.add("INSERT INTO user(name, age) VALUES('Tom', 18) ");
        list.add("INSERT INTO user(name, age) VALUES('Crystal', 29)");
        list.add("INSERT INTO user(name, age) VALUES('Overflow', 22)");
        Log.e("MainActivity",list.toString());
        for(String sql:list) {
            db.execSQL(sql);
        }

        // 修改数据
        String UpdateSql = "UPDATE user SET age=88 where name='Overflow'";
        db.execSQL(UpdateSql);

        // 查询数据
        String querySql = "SELECT * FROM user";
        Cursor cursor = db.rawQuery(querySql, null);
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.d("MainActivity", "id: " + id + ", name: " + name + ", age: " + age);
        }

        // 删除数据
        String DeleteSql = "Delete from user where name='Tom'";
        db.execSQL(DeleteSql);

        // 关闭数据库
        db.close();

 执行效果:

猜你喜欢

转载自blog.csdn.net/wh445306/article/details/129756661