Skip to content
📈0️⃣

MySQL 怎么判断数据是否入库成功

当使用 MySQL 数据库时,可以使用 INSERT 语句将数据插入到数据库中。会返回如下代码:

sql
users/register... OkPacket {
  fieldCount: 0,
  affectedRows: 1,
  insertId: 10,
  serverStatus: 2,
  warningCount: 1,
  message: '',
  protocol41: true,
  changedRows: 0
}

这个是什么意思?我怎么判断是否入库成功呢。

OkPacket 对象

上述输出表示在执行 users/register 操作后,返回的结果是一个 OkPacket 对象。这个对象包含了执行数据库插入操作的相关信息。

具体字段的含义如下:

  • fieldCount:受影响的字段数量。
  • affectedRows:受影响的行数,表示该操作对数据库中的数据进行了修改或插入的行数。
  • insertId:如果有自动生成的主键(比如自增 ID),则表示插入的记录的自动生成的主键值。
  • serverStatus:服务器状态代码。
  • warningCount:警告数量。
  • message:与操作相关的信息。
  • protocol41:指示使用的协议版本。
  • changedRows:已经修改的行数。

要判断是否入库成功,你可以通过检查 affectedRows 值来确定操作是否成功。如果 affectedRows 的值大于 0,则表示有一条或多条记录成功插入(或修改),即操作成功。反之,如果 affectedRows 的值为 0,则表示没有记录被插入或修改,可能是因为未满足条件或出现了其他错误。

代码案例

因此,可以使用以下方式来判断是否入库成功:

javascript
if (result.affectedRows > 0) {
  // 入库成功
} else {
  // 入库失败
}

需要注意的是,OkPacket 对象仅表示执行插入操作后的结果信息,并不能提供更详细的错误信息。如果需要获取更多的错误信息,可以查看数据库操作的报错提示,或者根据具体情况进行日志记录和错误处理。

当然,为了判断数据是否成功插入,也可以使用 SELECT 语句查询插入的数据,并检查查询结果是否符合预期。如果查询结果符合预期,则可以认为数据已成功插入。