gpt4 book ai didi

ruby - 在 Ruby + TinyTDS 中参数化 SQL 查询

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:43 25 4
gpt4 key购买 nike

我试图弄清楚如何在将 SQL 字符串交给执行之前对其进行参数化,但遗憾的是我发现了很多 of this在互联网上:

sql = "SELECT * FROM table_name WHERE thing LIKE '%#{input}%'"

这是一件坏事...但是,参数化 sql 查询在底层可用 Sequel库,这是 TinyTDS 构建的基础。所以我知道这是可能的。我只是很难弄明白。

我真的希望它能像 this 一样简单:

@client = TinyTds::Client.new(
:adapter => 'sqlserver',
:host => host,
:database => db,
:username => username,
:password => password)

sql = "SELECT * FROM table_name WHERE thing LIKE ?"
safe_sql = @client.prepare(sql, input)
result = @client.execute(safe_sql)

我好像找到了一个叫做 Dataset 的东西源代码中的类,它有一个准备方法。问题是,我该如何使用它?在将它交给 @client 对象中的 execute() 方法之前,我是否需要创建另一个对象?我找不到 initializenew 方法,所以简单的实例化似乎是错误的方法。

最佳答案

我使用 TinyTds 作为适配器实现了 Sequel gem。这允许您参数化 SQL 查询。请参见下面的示例:

require "tiny_tds"
require 'sequel'

DB = Sequel.connect(
adapter: 'tinytds',
host: "dataserver",
database: "database",
user: "username",
password: "password"
)

然后我能够使用参数化的值创建 SQL 插入语句。

posts_table = DB[:posts]
posts_table.insert(:author => 'John Smith', :title => 'How to parametrize sql queries')

我正在连接到 MS SQL 数据库。

关于ruby - 在 Ruby + TinyTDS 中参数化 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com