问题标签 [sql-parametrized-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 投票
1 回答
228 浏览

c# - 创建参数化查询,允许存储为字符串的用户输入与数据库字段进行比较

我几乎 100% 确定我的问题是在将 nvarchar 值作为我的搜索键添加到参数化查询时引起的。问题出现了,如果我有撇号的周围@exp是我的占位符,则查询被解释为@exp 是我的搜索键而不是占位符。我会删除撇号,除非查询在语法上不正确,除非搜索键被撇号包围。有人向我解释说,我不能只将撇号添加到插入参数的值中,因为已经评估了执行计划,并且搜索键值实际上是“西班牙文”而不是西班牙文。我的问题是如何解决这个问题。有关该问题的更广泛背景,请参阅下面的说明。

正如标题所述,我有两个动态查询,一个使用参数化,一个不使用,这两个查询都是为了做同样的事情。查询用于返回具有特定语言的主要或次要经验的成员数量。

话虽这么说,查询是这样设置的。连接设置正确,并且String exp在两个查询中使用的值都被硬编码为西班牙语以进行测试。

不使用参数化:

使用参数化:

我也试过:

我相当确定该错误与我如何将值添加到参数或如何将参数添加到 SqlCommand 在上下文中我需要撇号围绕搜索键有关。如果我当时在 CommandText 中放置了撇号,我还放置了查询运行的占位符 put 返回 0。打印出我得到的命令文本

这意味着它正在搜索具有 @exp 经验的成员,这将返回 0,因为没有条目具有该经验。

我将不胜感激有关此问题的任何帮助。如果我在上面的解释中陈述了错误的内容,请告诉我,如果你能解释我为什么错了。

0 投票
2 回答
2770 浏览

c# - SqlDataReader 错误

我正在尝试制作 SqlParameter 并且当我运行网站时出现错误SqlDataReader _dataReader = _command.ExecuteReader();

这是我的代码:

错误:

“/”应用程序中的服务器错误。

ExecuteReader:连接属性尚未初始化。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息: System.InvalidOperationException:ExecuteReader:连接属性尚未初始化。

源错误:

源文件: C:\Users\arnie.mateo\Desktop\GoWireless Project Leonel\GoWireless\GoWireless\account.aspx.cs 行:33

堆栈跟踪:

版本信息: Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.272

0 投票
0 回答
131 浏览

c# - 带有加密的 MySql 参数化查询导致不正确的 sintax

我有一个存储用户登录名和密码的表。对于测试,密码以极端加密保存。

仅举例:密码“one”被加密为

这就是我验证登录的方式:

其中 password 是一个字符串,其中包含用户密码的加密版本。上面的代码导致“密码附近的 sintax 不正确”。当然,“密码”参数没有按预期进行解析。当我使用 MS SQL Server 时,上面的命令可以正常工作。

我需要做什么才能安全地执行这个查询?

我也试过换行

但没有区别,导致不正确的语法异常。

0 投票
1 回答
932 浏览

datasource - Pentaho 参数化数据源

我正在尝试构建一些参数化数据源(通过 jndi 的 sql 查询)。我的数据源的查询是:

参数${param_interval}可以得到两个值:MONTHDAY,并且当我检查它得到正确的值。但是当我试图预览我的仪表板时,我收到警告“错误处理组件”。

请注意,此查询(见下文)可以正常工作。

有人能告诉我哪里出错了吗?或者(可能)不支持这种在数据源中使用参数的方式?

0 投票
2 回答
1305 浏览

c# - 参数化 Linq to SQL 查询导致性能问题

我有一个 linq 查询需要 11 分钟才能针对 MSSQL server 2008 执行。我使用 MSSQL Profiler 来查找执行时间很长的查询,然后我将它单独运行到我的数据库中。

我还删除了所有参数并直接添加了值并运行了查询。执行时间不到 1 秒!

我搜索了一下,发现使用参数确实会影响性能,因为计划是在 where 子句的值已知之前编译的

由于 Linq to SQL 总是运行参数化 SQL,在这种情况下我可以做些什么来提高性能?

我还没有发现任何可以改进的关于索引的列。Inner Join 语句中的第一个表有 192 014 行,不带参数的 SQL 执行时间不到一秒。附上执行计划的截图。

编辑在屏幕截图下方。

这是 Linq 查询:

带参数查询的执行计划(linq to sql) 已知值查询的执行计划

编辑:这里的屏幕截图确实有点小。参数化 SQL 中只有 5 个参数。

编辑2:是带有参数@p0 的Inner Join 语句导致执行计划发生变化。当我只删除带有值本身的@p0 变量时,它会在不到一秒的时间内运行。如果此值在所有情况下都是恒定的(我必须对此进行调查),我可以做任何事情以使该值不会像参数一样被使用吗?

0 投票
2 回答
938 浏览

sql - Lazarus Pascal:找不到参数 pp

一段时间以来,我一直在 Lazarus 上使用带有参数的 SQL 查询,但我被这个错误难住了。这似乎很基本,但我只是迷路了。

我有以下拉撒路帕斯卡代码:

程序在运行最后一行(带参数 pp)时报告运行时错误。错误是:

未找到参数 pp。

我有多个参数的查询,但没有问题。就这一个。我什至尝试重命名参数名称,但我得到了同样的错误。

如果我使用字符串文字代替参数或插入如下连接的字符串,它就可以正常工作。

在上面的最后一个示例中,lstCo 是一个下拉列表框。在整个代码中,dtWeekEndingDate 是一个日期控件。

也许我正在监督一些事情。任何想法?谢谢!

0 投票
1 回答
1625 浏览

c# - 使用带有 sqlcommandbuilder 的参数化参数 [无数据适配器]

我正在尝试使用参数化查询,该查询采用 2 个列名和一个表名,并从 sql server 数据库中检索数据。

问题是不可能对表名进行参数化,所以我找到了一个使用 sqlcommandbuilder.quoteIdentifer(tablename) 的解决方案,并且这个有点工作......但显然它们在一起玩得不好。

我得到包含一个单词的异常,它是列名如果我手动输入列名,它就可以工作。

这里有什么问题?

编辑:这可行,但我想知道为什么两者不能一起使用:

0 投票
1 回答
203 浏览

c# - 为什么在参数化查询中更改参数名称会导致抛出 SqlException?

我的原始查询使用@WF_ID 作为参数名称,并且可以毫无问题地执行。虽然我很懒,而且 WF_ 输入太多,所以我将参数重命名为 @ID,但现在执行时会抛出 SQLException。确切的消息是“无效的列名'_Page'”

这是查询和相应代码的两个版本。如您所见,唯一改变的是参数名称。

2.0版破版

我最初的想法是参数名称不能与列名之一相同......但我找不到任何明确说明的内容。

查看这个 StackOverflow 主题,您似乎无法通过参数传递列名。我可以在 SQL 存储过程中将列名作为输入参数传递吗

0 投票
4 回答
134 浏览

c# - 使用 LIKE 的 sql 参数化查询

我试图将参数传递给 quert,但它不起作用。最好的方法是什么?我不想连接字符串。这是我的查询:

我无法使用 LIKE 运算符传递值。我也尝试过使用@text 而不是“?” 但它不起作用。有什么建议么?

顺便说一句,它在“?”附近给出了不正确的语法 异常

0 投票
1 回答
307 浏览

c# - DB2 C# IBM 驱动程序中的参数化十六进制文字

有DB2数据库。

有 C#.NET 应用程序,它使用 IBM.Data.DB2 驱动程序连接到数据库 (IBMDB2)。

有一个参数化查询(DB2Command 对象,初始化为): "SELECT $coid_ref FROM db.$ext WHERE $coid = @coid"

需要用十六进制文字替换@coid。例如,它应该像这样执行: "SELECT $coid_ref FROM db.$ext WHERE $coid = x'AA23909F'"

但是,当我尝试通过 command.Parameters.Add("@coid", "AA23909F") 添加参数时,驱动程序尝试将其添加为字符串,这会导致错误。我该如何解决这个问题?