You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中使用react-native-sqlite-storage更新后获取更新行数据

如何在react-native-sqlite-storage的update操作后获取更新后的行数据?

SQL的UPDATE语句本身不会返回修改后的行数据,你需要在同一个事务中完成两步操作:

  1. 执行UPDATE语句完成数据更新
  2. 立即执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:57:32