内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我正在尝试手动执行SQL命令,以便访问NuoDB中的过程。
我使用RubyonRails,我使用以下命令:
ActiveRecord::Base.connection.execute("SQL query")
“SQL查询”可以是任何SQL命令。
例如,我有一个名为“反馈”的表,当我执行命令时:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
这将只返回一个“True”响应,而不是发送给我所有要求的数据。
这是Rails控制台上的输出:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks` => true
我用来执行自定义SQL语句的工作命令是:
results = ActiveRecord::Base.connection.execute("foo")
以“foo”作为SQL语句(即。“选择*)。
此命令将返回一组值作为散列,并将它们放入结果变量中。
所以在我的Rails应用程序上_rb我添加了以下内容:
def execute_statement(sql) results = ActiveRecord::Base.connection.execute(sql) if results.present? return results else return nil end end
使用执行_语句将返回找到的记录,如果没有,则返回零。
这样,我就可以在Rails应用程序中的任何地方调用它,例如:
records = execute_statement("select * from table")
对我来说,我无法让它返回哈希。
results = ActiveRecord::Base.connection.execute(sql)
但是利用exec_query方法有效。
results = ActiveRecord::Base.connection.exec_query(sql)