【问题标题】:MS Access count(*) query in Ruby script not returning with a numberRuby脚本中的MS Access count(*)查询未返回数字
【发布时间】:2011-12-20 18:59:52
【问题描述】:

我有一个脚本,我想确定 Microsoft Access 数据库表中的记录数并将其分配给一个变量。我有下面的代码(sn-p),它运行没有错误,但结果不是数字,而是#。这是其他格式的数字吗?我可以将其转换为数字吗?当我在 Access 中运行 SQL 时,我得到 43(例如);这正是我所期待的。

...

connection = WIN32OLE.new('ADODB.Connection')
connection.Open('Provider=Microsoft.ACE.OLEDB.12.0;
                 Data Source=C:\Database.mdb')
recordset = WIN32OLE.new('ADODB.Recordset')
  number_of_sites =  connection.Execute("SELECT count(*)FROM Test;")
  puts number_of_sites

...

提前致谢! :)

【问题讨论】:

    标签: sql ruby ms-access count adodb


    【解决方案1】:

    Andrew 关闭 - connection.Execute 返回一个记录集,而不是一个标量。要获得计数,您需要 'recordset.Fields(0).value)。

    【讨论】:

      【解决方案2】:

      connection.Execute 不返回数据,它只是执行 sql。您可以使用它来执行 INSERT。要获取数据,您需要一个记录集。

      recordset = WIN32OLE.new('ADODB.Recordset')
      recordset.Open("SELECT count(*) FROM Test", connection)
      count = recordset[0]
      

      我对记录集上的索引不肯定——它可能是记录集[1]?

      【讨论】:

      • 这行得通,但它不喜欢最后一行中的 0 或 1。它返回一个错误,说“[]”:无法将 Fixnum 转换为字符串(类型错误)。我通过这样做 data=recordset.GetRows puts data 解决了这个问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多