gpt4 book ai didi

.net - 在 SqlCommand 上传递参数不起作用

转载 作者:行者123 更新时间:2023-12-02 00:10:31 26 4
gpt4 key购买 nike

我正在尝试运行单个命令将行插入到我的 SQL Server 2012 数据库中,但是我的参数没有传递给代码。

con.Open();

string query = @"INSERT INTO [dbo].[Users](Username, Password, Role)
VALUES (@u, @p, @r);";
var cmd = new SqlCommand(query, con);

cmd.Parameters.AddWithValue("@u", username);
cmd.Parameters.AddWithValue("@p", password);
cmd.Parameters.AddWithValue("@r", role);

cmd.ExecuteNonQuery();

con.Close();

我得到带有参数化查询的SqlException

'(@u nvarchar(4000),@p nvarchar(4000),@r nvarchar(1))INSERT INTO ' expects the parameter '@u', which was not supplied.

我看到它的方式是在执行命令之前传递参数。谁能帮我找出缺少的东西?

最佳答案

您的问题不是因为您的查询,而是因为变量username is NULL。当您的变量用户名为 null 时,当您使用 .AddwithValue 时它不会抛出任何错误,但是,它没有设置参数,这就是为什么当您使用该参数时,它返回异常表示未提供参数。
使用以下代码,您可以重现您的问题并验证原因。如果你给username=string.Empty,就不会给你这个issue了。


string connStr = "Data Source=localhost;Initial Catalog=Adventure;Integrated Security=SSPI";
SqlConnection con = new SqlConnection(connStr);
string username = null;
string password = string.Empty;
string role = string.Empty;
try
{
con.Open();
string query = @"INSERT INTO [dbo].[Users]" + @"(Username ,Password , Role) " + @"VALUES (@u,@p,@r);";
var cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@u", username);
cmd.Parameters.AddWithValue("@p", password);
cmd.Parameters.AddWithValue("@r", role);
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace + ex.Message);
con.Close();
}

关于.net - 在 SqlCommand 上传递参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15715715/

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