在 React Native 中的 SQLite 上传递两个参数时无法获取数据
Posted
技术标签:
【中文标题】在 React Native 中的 SQLite 上传递两个参数时无法获取数据【英文标题】:Can't get data when passing two parameters on SQLite in React Native 【发布时间】:2019-02-22 03:10:04 【问题描述】:我尝试为选择查询传递如下两个参数,但我没有得到数据
db.transaction(tx =>
tx.executeSql('SELECT * FROM data WHERE (month = ? AND items_id = ?);', ["Sep 2018",68], (_, rows ) =>
console.log(JSON.stringify(rows));
);
);
输出:
"_array":[],"length":0
但是在查询中传递了值,我得到了如下输出
db.transaction(tx =>
tx.executeSql('SELECT * FROM data WHERE (month = "Sep 2018" AND items_id = 68);', [], (_, rows ) =>
console.log(JSON.stringify(rows));
);
);
输出:
"_array":["item_id":"68","item_name":"Apple","month":"Sep 2018"],"length":1
注意:
我正在使用 Expo Sqlite ("expo": "^27.0.1",)
import Expo, SQLite from 'expo';
const db = SQLite.openDatabase('itemsDb.db');
请帮助实现这一目标。谢谢!
【问题讨论】:
尝试使用sqlBatch而不是executeSql。我在没有 Expo 的情况下使用 react-native-sqlite-storage 并且都运行良好。 @trubi 请详细解释或提供参考 【参考方案1】:可能和react-native-sqlite-storage
有同样的bug:
参数从数字转换为字符串,导致查询表达式失败,因为items_id
列包含整数
一种解决方案是在 SQL 命令中将值转换回整数:
SELECT * FROM data WHERE (month = ? AND items_id = cast(? as integer))
原bug报告here
【讨论】:
以上是关于在 React Native 中的 SQLite 上传递两个参数时无法获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在 expo react native 中使用 sqlite 文件
如何在 sqlite3 中以 react native 创建数据库