当前位置: 首页 > 面试题库 >

C ++ OTL SQL数据库库是在后台使用参数化查询还是字符串concat?

马弘益
2023-03-14
问题内容

我一直在寻找用于C++数据库访问的OTL(Oracle,Odbc和DB2-CLI模板库)。我不确定是否将传入的查询转换为针对基础数据库的参数化查询,或者基本上只是将所有参数连接成一个大字符串并将查询以这种方式传递给数据库。我看到传递给它的查询可以包含参数的类型信息,但是我无法确定从那时到查询命中数据库之间发生的情况。


问题答案:

OTL作者对我的电子邮件的回复:

OTL将带有占位符的查询传递到DB API层。对于不同的数据库类型,实际绑定变量的命名约定是不同的。对Oracle说,

SELECT * FROM staff WHERE fname=:f_name<char[20]>

将被翻译成:

SELECT * FROM staff WHERE fname=:f_name

再加上一堆主机变量绑定调用

对于MS SQL Server或DB2,相同的SELECT看起来像这样:

SELECT * FROM staff WHERE fname=?

手册中描述,对于MSSQL,DB2,您不能有多个相同名称的占位符。具有占位符/绑定变量的SQL语句创建起来相对昂贵,因此,如果通过otl_stream实例化参数化的SQL,则尽可能多地重用该流是有意义的。

如果您还有其他问题或对如何改进OTL手册的建议,请随时给我发送电子邮件。

pheadbaq写道:

嗨,我最近一直在评估C ++
DB库,将其用作我要构建的ORM库的基础,并且越来越倾向于OTL。顺便说一句,它看起来非常不错,并且看起来可以满足我的大多数需求。我只有一个挥之不去的问题,我似乎无法通过阅读文档来澄清。OTL是将参数化查询传递给基础DBMS,还是将我传递给OTL流的参数和查询合并为一个字符串,然后传递给DBMS?

换句话说,如果我将这个MSSQL查询以及字符串“ Bob”作为绑定变量进行OTL处理:

SELECT * FROM staff WHERE fname = :f_name<char[20]>

OTL解析器是否产生以下内容:

SELECT * FROM staff WHERE fname = 'Bob'

或这个:

SELECT * FROM staff WHERE fname = @f_name

连同我的字符串作为参数

感谢



 类似资料:
  • 问题内容: 我在Windows上安装了XAMPP,并安装了MySQL。 我想知道如何从C#查询数据库。 我已经可以使用连接了。 我正在数据库中寻找一个字符串,如果有,请弹出一句话。我该怎么做? 问题答案: 这是使应用程序连接到数据库的示例代码 从数据库获取字符串值的函数 按钮单击事件中的功能代码

  • 问题内容: 我正在尝试使用Microsoft.SqlServer.Management.Smo将数据库从一台服务器还原到另一台服务器。问题是我不断收到错误消息,指出它找不到.MDF文件。这样做的原因是,它试图从它来自的SQL实例名称的数据文件夹中找到它,而不是在另一个SQL实例的数据文件夹中寻找它。有没有一种方法可以告诉它要在哪个文件夹中搜索mdf,而不是假定它是标记到BAK文件的文件夹?真令人沮

  • 我也使用了SQL和Oracle,但我有一个很大的困惑。在oracle中,用户属于数据库还是数据库属于用户。因为我已经使用sql命令在oracle中创建了一个新用户。然后我创建了表,但我没有创建任何数据库,那么新表去了哪里? 我猜想表与oracle中的用户相关联,就像创建表的人是表的所有者,其他用户无法访问该表,因此无需通过先创建数据库,然后在其下创建表来区分它们。 但是在MYSQL中(使用PhpM

  • 问题内容: 有谁知道如何检查JavaScript中的变量是数字还是字符串? 问题答案: 如果你处理的文字符号,而不是构造函数,你可以使用typeof运算。 如果您是通过构造函数创建数字和字符串,比如,你应该记住,可能会返回了。 检查类型的更简单的方法可能是利用在underscore.js中找到的方法可以在[此处找到带注释的源代码), 这将返回以下布尔值:

  • 我从客户端发送了以下查询字符串参数 在REST服务器中,我如何接收上述格式并正确分配给每个类别? 更新1 参数的值为 {_=[1437904506062],{“take”:75,“skip”:0,“page”:1,“pageSize”:75、“filter”:{“logic”:“and”,“filters”:〔{“field”:“prodCode”,“operator”:“eq”,“value”:

  • 我正在用ASP.NET核心剃刀页面构建一个ToDo列表应用程序,我正在使用EF核心。 我有一个模型是ToDo