我正在尝试使用react-native-sqlite-storage在 React Native 中动态添加 SQLite 表。表的名称由用户指定。对我有用的替代方法 1是直接创建查询,如下所示:
import {openDatabase} from 'react-native-sqlite-storage';
...
const db = await openDatabase({name: 'someDB.db', location: 'default'});
db.executeSql(`CREATE TABLE IF NOT EXISTS ${customTableName}(...);`);
但是,在这种情况下,我没有使用参数(?
),感觉这很容易发生 SQL 注入。
所以显而易见且安全的备选方案 2似乎是使用参数:
import {openDatabase} from 'react-native-sqlite-storage';
...
const db = await openDatabase({name: 'someDB.db', location: 'default'});
db.executeSql('CREATE TABLE IF NOT EXISTS ?(...);', [customTableName]);
不幸的是, react-native-sqlite-storage似乎不支持这并导致语法错误:
near "?": syntax error (code 1 SQLITE_ERROR): , while compiling: CREATE TABLE IF NOT EXISTS ?(...);
我不确定我是否应该坚持使用备选方案 1,或者是否有类似于备选方案 2的更好方法,它使用带有react-native-sqlite-storage 的参数?
从用户定义的标识符创建表只是一种不好的做法,以便我应该满足于一般不同的东西吗?