React Native中使用react-native-sqlite-storage更新后获取更新行数据
如何在react-native-sqlite-storage的update操作后获取更新后的行数据?
SQL的UPDATE语句本身不会返回修改后的行数据,你需要在同一个事务中完成两步操作:
- 执行
UPDATE语句完成数据更新 - 立即执行
SELECT语句查询对应book_id的完整数据
修改后的updateData函数如下:
async function updateData({ book_id, author, price }) { return new Promise((resolve, reject) => { db.transaction(tx => { // 第一步:执行更新操作 tx.executeSql( 'UPDATE books SET author = ?, price = ? WHERE book_id = ?', [author, price, book_id], (tx) => { // 更新成功后,第二步:查询更新后的行数据 tx.executeSql( 'SELECT * FROM books WHERE book_id = ?', [book_id], (_, res) => { if (res.rows.length > 0) { // 返回查询到的更新后数据 resolve(res.rows.item(0)); } else { resolve(null); // 未找到对应数据 } }, (_, error) => { console.log('查询更新后数据失败: ', error); reject(error); } ); }, (_, error) => { console.log('更新数据失败: ', error); reject(error); } ); }); }); }
说明:
- 原代码中
res.rowsAffected = 1仅表示有1行数据被更新,但UPDATE语句不会返回行内容,所以res.rows为空 - 在同一个事务中执行
UPDATE+SELECT,能保证数据的一致性,避免其他操作在中间修改数据 - 调用该函数后,你将直接拿到更新后的完整图书对象,例如:
const updatedBook = await updateData({ book_id: 1, author: "新作者", price: 59.9 }); console.log('更新后的图书数据:', updatedBook);
内容的提问来源于stack exchange,提问作者Neeraj Jangir
相关产品推荐
相关产品推荐

