【问题标题】:TinyTDS: chek if query succededTinyTDS:检查查询是否成功
【发布时间】:2015-04-24 19:14:10
【问题描述】:

我在 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

查询成功是因为数据库发生了变化,为什么会出现错误的结果?

如何检查查询是否成功?

【问题讨论】:

    标签: ruby-on-rails sql-server-2008 ruby-on-rails-4 tiny-tds


    【解决方案1】:

    当你调用'execute'方法时,你的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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多