HarmonyOS 鸿蒙Next数据库中如何使用传统sql方式
HarmonyOS 鸿蒙Next数据库中如何使用传统sql方式 如果不使用RdbStore对象的insert、update、delete、query方法来操作数据库,而是使用传统SQL来对数据库进行增删改查,应该用哪个方法?
我看到有好几个类似的方法:executeSql、querySql、execute
他们有什么区别?难道还得自己判断是查还是改然后决定用哪个方法吗?
或者是不是不该用这个框架,而是直接去使用sqlite.h???
使用executeSql执行sql
executeSql(sql: string, bindArgs?: Array<ValueType>):Promise<void>
很多平台的db api为什么提供了insert、update、delete、query方法,又再提供一个executeSql,
- 一方面除了CRUD操作,还有些额外sql语法的支持,
- 另外一方面安全上,尽量用平台提供的CRUD方法+参数,避免SQL注入攻击。
executeSql、querySql这两个我猜就是底层一个执行语法支持更多,另外一个只能支持query,能为你的操作做权限分级。
重新看了下api,主要是返回值不同,支持的Sql语句范围不同。
参考API:
更多关于HarmonyOS 鸿蒙Next数据库中如何使用传统sql方式的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
executeSql这个方法并没有返回值,是不是他只能执行除了查以外的语句。
你说的是对的,我竟然搜索到的是 deprecated 的 API…
应该就是为了区分查找和非查找的,https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-relationalstore-V5#executesql10
官网有写: 此接口不支持执行查询、附加数据库和事务操作,可以使用 querySql、query、attach、beginTransaction、commit 等接口代替。
不支持分号分隔的多条语句。
在HarmonyOS鸿蒙Next中,使用传统SQL方式进行数据库操作,可以通过SQLite数据库实现。鸿蒙系统内置了SQLite数据库引擎,开发者可以使用SQL语句进行增删改查等操作。具体步骤如下:
-
创建数据库:使用
DatabaseHelper
类创建或打开数据库,指定数据库名称、版本号等信息。 -
执行SQL语句:通过
SQLiteDatabase
对象的execSQL()
方法执行SQL语句,如创建表、插入数据、更新数据等。 -
查询数据:使用
rawQuery()
方法执行SQL查询语句,返回Cursor
对象,通过Cursor
遍历查询结果。 -
关闭数据库:操作完成后,调用
close()
方法关闭数据库连接,释放资源。
示例代码片段:
DatabaseHelper dbHelper = new DatabaseHelper(context, "myDatabase.db", null, 1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
// 创建表
db.execSQL("CREATE TABLE IF NOT EXISTS myTable (id INTEGER PRIMARY KEY, name TEXT)");
// 插入数据
db.execSQL("INSERT INTO myTable (name) VALUES ('example')");
// 查询数据
Cursor cursor = db.rawQuery("SELECT * FROM myTable", null);
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
// 处理查询结果
}
cursor.close();
// 关闭数据库
db.close();