问题标签 [parameterized-query]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1856 浏览

c# - SqlCe 参数错误

我在这个可爱的星球上进行了许多参数化查询,但没有人抛出这样的错误...... WTFudge ?!?!

错误:

显然编译器不喜欢我的 SQL 语句……但我看没问题???

这是我的代码。

正如你所看到的,它是一个非常简单的 SQL 语句。我虽然“@table”可能被愚蠢地保留了或什么......所以我尝试了@tableName,@var,@everything!不知道是什么问题。

在调试期间,我检查了 SqlCeParameterCollection 中实际上有一个 @table 参数并且它就在那里。清如白昼!!

图片:调试信息

0 投票
3 回答
1756 浏览

c# - 如何在参数化查询中传递 guid?

我目前最好的代码是:

这会执行但会影响多达零行。如果我将 keyuid 上的 SqlDbType 更改为 UniqueIdentifier,最终我会得到十几个关于“无法将字符串转换为唯一标识符”的变体。我必须使用参数化查询来保证数据的清洁度,我只是不知道如何......

0 投票
3 回答
1627 浏览

java - 这是允许通配符搜索用户的正确方法吗?

例如,给定一个文本框名称,用户需求希望能够进行通配符搜索(例如包含、开始于、结束于)。

只要我仍在后端(Java)中使用参数化查询,是否可以接受 sql 通配符('%' 和 '_')作为输入?有效地,允许用户构建自己的正则表达式,这就是用户的需求。

例子:

  1. 用户类型在

    /li>
  2. 该参数被馈送到后端,如下所示:

    /li>
  3. 由于用户提供了正则表达式,结果集将包括名称为“Waren”、“Jared”、“Clare”、“Blare”的人。

使用 SQL 参数化查询,我可以确保我不会允许 SQL 注入。这实现了用户对通配符搜索的要求,但它是否违反了我可能遗漏的任何内容?

更新:刚刚从他们的帮助页面发现谷歌也允许通配符。

0 投票
1 回答
452 浏览

ado - 无法让经典 ADO 参数化文本查询在旧版 MFC 应用程序中工作

我已经开始维护一个使用经典 ADO 的 MFC 桌面应用程序。有一个数据库访问 dll 包装了整个应用程序中使用的导入的 ADO。使用了存储过程,但也有很多文本查询,没有一个是参数化的。我被要求将它们转换为参数化查询。我更改的前 2 个查询遇到了问题。我调用了一个函数两次,它从一个名为“Parameters”(无关系)的表中获取一个字符串值,该表由一个唯一的整数索引。我创建了一个 ADO 参数来保存整数并执行查询。第二次调用此参数时,未设置参数并返回 -1(在 SQL 分析器中看到,第一次是正确的),导致记录集为空。我无法解释这一点,(尽管根据过去的经验,我'

  • 进一步(奇怪)信息:我现在注意到,对“GetParams”的两个函数调用的存在或执行会导致数据访问 dll 中的其他一些方法在被调用时抛出 _com_errors(它们涉及复制记录集)一个不相关的dll。如果我注释掉 2 个函数调用,错误就会消失,而引发错误的方法没有改变。

  • 编辑 21:31 4/11/11 我应该给出 ClearParameters 的实现 - 见上面代码的底部 至于没有设置参数,我的意思是查询中替换的值是“-1”而不是“ 19007”根据 SQL Server Profiler 记录。我认为 -1 是一个虚假值,它来自于参数在创建时未成功分配值。我应该补充一点,ADO 命令和记录集对象是在 DBRecordSet 构造函数中创建的。

    • 编辑21:32 5/11/11 我可能已经解决了这个问题。我正在使用 ADO 的“backcompat”版本,我不确定自从应用程序是用 VS6 编写以来方法参数类型是否发生了变化,但 CreateParameter 的签名现在是:

      /li>

这与示例代码中的参数不同(名称是 LPSTR,MSDN 中整数参数的大小例如是 -1,值作为长整数传递,而不是变体) 同样在 MSDN 示例中,设置了参数值在创建之后再次(虽然不确定这是否相关,为什么要设置两次?除非这是一个已知的“怪癖”)。使类型符合 ADO 对象模型似乎已经成功了。如果测试验证一切正常,我会将其作为答案发布

0 投票
1 回答
175 浏览

sql-server - SQL Server 不返回参数化查询中特定单词的结果

我正在使用参数化查询来搜索从搜索框中拾取的特定单词,但某些单词会产生问题。其中之一是“pad”这个词。

这是我正在使用的食谱数据库,其中有一个名为“pad Thai”的食谱;如果我将单词“thai”传递给查询参数,则该配方会很好地返回。如果我传入单词“pad”,查询将运行大约 10 秒并且不返回任何记录。

我怀疑“pad”是保留关键字,所以我一直在尝试其他关键字;到目前为止,我发现唯一导致相同问题的是“proc”。

任何想法是什么问题,更重要的是,我如何解决它。

0 投票
4 回答
1260 浏览

php - 我可以将参数绑定到 PDO 语句作为比较运算符吗?

这是代码吗

注射安全吗?

我可以将参数绑定到 PDO 语句作为比较运算符吗?

0 投票
1 回答
1550 浏览

python - SPARQL 参数化查询

再会!我将 rdflib 应用于 python。我有个问题。如何将变量放入 SPARQL 的查询中?在课程中代替“OSPF”:OSPF!

@ msalvadores 我想通过控制台输入我的变量。--->python parse.py OSPF 变量(OSPF)的值可能是另一个。如何将其初始化为查询(WHERE)?几天前,我通过变量插值解决了我的问题。像这样:

但我想它可以用另一种方式来完成。因为在我看来,我提出的解决方案并不完全正确。

0 投票
1 回答
1220 浏览

c# - 参数分隔符

我有我们一直在 ADO.NET 中编码的 C# 应用程序。我一直在使用IDbCommand, 和IDbConnection接口来创建跨数据库代码。

到目前为止,这一切都运行良好(跨 Firebird、SQLite、SQL Server 2005 和 2008、Access 2007 和 Access 2010 以及 Oracle 11g)。

我的问题是,我现在有一个需要支持的 Oracle 10g 数据库吗?

所有“正常”的东西,创建连接和命令都可以正常工作,但是,当我使用接口创建参数IDataParametercmd.CreateParamater()在 10g 上失败时,由于查询中的参数语法(我正在使用参数化查询)。

显然,开箱即用的 Oracle 10g 不支持使用该@符号。Oracle 11g、SQL Server 和所有其他提到的都可以。

例如,以下查询将在 10g 中失败:

但是,如果我使用冒号,它会成功,使用上面提到的 ado.net 接口,所以这个查询会成功:

不幸的是,冒号在大多数其他数据库实现中不起作用。

或者是否有可以在 Oracle 10g 数据库中翻转的选项,允许使用@分隔符代替参数的:分隔符。

我目前的解决方案不太理想,我让客户/客户初始化属性ParameterDelimiter(我默认为@符号),并使用string.Format, 插入ParameterDelimiter.

有没有我遗漏的标准方法,而不需要客户向我传递分隔符,或者我的基础库不知道数据库实现?(例如,包括 ODP.NET 和检查一个OracleConnection

0 投票
7 回答
10913 浏览

c# - 循环内的 ExecuteNonQuery

我正在尝试在 C# 的循环中插入数据库记录。

当我对这样的值进行硬编码时,它会起作用:

但是当我使用参数化查询时它不起作用 - 即使我将一个值硬编码到参数化查询中,如下所示:

谁能看到我要去哪里错了?

非常感谢!

0 投票
3 回答
5203 浏览

delphi - 如果我为不存在的参数调用 ParamByName 会发生什么?

我对 Delphi 很陌生,收到了以下代码(省略了一些不相关的部分),我试图了解它的作用:

在另一个文件中,使用了该查询,但添加了一个未在查询中定义的参数。

这个参数'part'会改变所做的选择吗?换句话说:SQL查询是否自动变为以下?