标签: ruby sqlite
如果我运行execute("SELECT * FROM users WHERE id = 1")[0][0],我将从该结果集的第一行返回第一个字段。
execute("SELECT * FROM users WHERE id = 1")[0][0]
如果我运行prepare("SELECT * FROM users WHERE id = ?").execute(1)[0][0],我觉得它应该返回相同的结果,我收到错误[] NoMethodError。
prepare("SELECT * FROM users WHERE id = ?").execute(1)[0][0]
[] NoMethodError
我不能为我的生活弄清楚为什么和文档看起来真的很稀疏。发生了什么事?
答案 0 :(得分:0)
您的两个execute方法并不相同,并且会返回不同的内容。
execute
在第一个实例中,您在Database上调用execute,它返回一个简单的数组。然后使用[]正确地将其编入索引。
Database
[]
但是,prepare会返回Statement对象,然后您可以在其上调用execute。而是返回ResultSet,它没有与数组相同的语义。
prepare
Statement
ResultSet
您可能正在寻找execute!。
execute!