0

我在 rails 项目中使用 tiny_tds gem(使用旧版 MSSQL 2008 数据库)

我执行以下查询:

update_comment_result = self.get_pmi_client.execute("UPDATE UECOMCLI SET COMMENT = '" + params[:comment] + "' " +
        "WHERE ECKTSOC = '" + params[:lcktsoc] + "' AND ECKTNUMERO = '" + params[:lcktnumero] + "' AND ECKTINDICE = '" + params[:lcktpsf] + "' \n" +
        "IF @@ROWCOUNT = 0 \n
        INSERT INTO UECOMCLI (ECKTSOC, ECKTNUMERO, ECKTINDICE, COMMENT) VALUES ('" + params[:lcktsoc] + "', '" + params[:lcktnumero] + "', '" + params[:lcktpsf] + "', '" + params[:comment] + "')")

之后,我无法确定查询是否成功。我试过使用:

update_comment_result.affected_rows

返回-1

我也试过

update_comment_result.each
update_comment_result.return_code

返回nil

update_comment_result.each
update_comment_result.affected_rows

返回-1

查询成功是因为在数据库中进行了更改,那么为什么会出现错误的结果?

如何检查查询是否成功?

4

1 回答 1

0

当您调用“执行”方法时,您的 sql 并没有实际运行。TinyTDS 只有在你开始操作结果时才会将它发送到 sql server,如果有错误,你可以捕获它

res = Client.Execute('sql script')
begin
    res.entries #now sql script is being sent to the sql server
rescue => e
    puts e
end
于 2015-04-24T10:56:45.017 回答