gpt4 book ai didi

c# - 选择查询不适用于使用 Parameters.AddWithValue 的参数

转载 作者:可可西里 更新时间:2023-11-01 07:58:30 28 4
gpt4 key购买 nike

C# 中的以下查询不起作用,但我看不出问题所在:

string Getquery = "select * from user_tbl where emp_id=@emp_id and birthdate=@birthdate";

cmdR.Parameters.AddWithValue("@emp_id", userValidate.emp_id);
cmdR.Parameters.AddWithValue("@birthdate", userValidate.birthdate);

OdbcCommand cmdR = new OdbcCommand(Getquery, conn);
OdbcDataReader Reader = cmdR.ExecuteReader();

Reader.HasRows 没有返回任何结果,但是当我将它查询到我的数据库时,我得到了数据。

最佳答案

我假设您的代码实际上并不像呈现的那样完全,因为它当前不会编译 - 您在声明它之前使用 cmdR

首先,您尝试使用命名参数,并且根据 OdbcCommand.Parameters 的文档,不支持:

When CommandType is set to Text, the .NET Framework Data Provider for ODBC does not support passing named parameters to an SQL statement or to a stored procedure called by an OdbcCommand. In either of these cases, use the question mark (?) placeholder.

此外,无论如何我个人都会避免使用 AddWithValue - 我会使用如下内容:

string sql = "select * from user_tbl where emp_id = ? and birthdate = ?";
using (var connection = new OdbcConnection(...))
{
connection.Open();
using (var command = new OdbcCommand(sql, connection))
{
command.Parameters.Add("@emp_id", OdbcType.Int).Value = userValidate.EmployeeId;
command.Parameters.Add("@birthdate", OdbcType.Date).Value = userValidate.BirthDate;
using (var reader = command.ExecuteReader())
{
// Use the reader here
}
}
}

此示例使用遵循 .NET 命名约定的名称,并演示如何正确处理资源...以及修复参数问题。

我确实认为将参数添加到命令时必须为其提供名称有点不幸,即使您不能在查询中使用它,但这就是生活。

关于c# - 选择查询不适用于使用 Parameters.AddWithValue 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32196416/

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