c# - 必须声明标量变量 “@Login” 。尝试向 SqlDataSource 添加参数时出错

标签 c# .net sql sqlcommand sqlparameter

我有这个错误: 必须声明标量变量“@Login”。

我的代码:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["intranetv2"].ConnectionString))
{

    SqlCommand cmd = new SqlCommand("insert into [MyBase].[Dbo].[LogErrors] (Username, StackTrace, ShortDescription, DetailDescription, ErrorType) VALUES (@Login, @Stack, @Message, @Txt, @Source)", conn);

                SqlParameter param = new SqlParameter();
                param.ParameterName = "Login";
                param.Value = user.Login;
                param.ParameterName = "Stack";
                param.Value = ex.StackTrace;
                param.ParameterName = "Message";
                param.Value = ex.Message;
                param.ParameterName = "Txt";
                param.Value = Txt;
                param.ParameterName = "Source";
                param.Value = ex.Source;
                // 3. add new parameter to command object
                cmd.Parameters.Add(param);
                conn.Open();
                return cmd.ExecuteNonQuery();
}

我尝试在参数中使用'@',但我有同样的错误。

最佳答案

您必须为每个参数创建一个新的 SqlParameter,它应该是这样的:

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["intranetv2"].ConnectionString))
{

    SqlCommand cmd = new SqlCommand("insert into [MyBase].[Dbo].[LogErrors] (Username, StackTrace, ShortDescription, DetailDescription, ErrorType) VALUES (@Login, @Stack, @Message, @Txt, @Source)", conn);

                SqlParameter param = new SqlParameter();
                param.ParameterName = "@Login";
                param.Value = user.Login;
                cmd.Parameters.Add(param);

                SqlParameter param2 = new SqlParameter();
                param2.ParameterName = "@Stack";
                param2.Value = ex.StackTrace;
                cmd.Parameters.Add(param2);
    (...)

关于c# - 必须声明标量变量 “@Login” 。尝试向 SqlDataSource 添加参数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17366045/

相关文章:

c# - 将控制台输出镜像到文件

c# - Entity Framework 5 代码首先将 newsequentialid() 作为 PK

c# - 面向 .NET Core 2.0

.net - 内存泄漏问题

sql - 无法将数据库引用添加到 VS2012 项目

php - 改进 MySQL 查询

c# - 在更新查询期间它抛出 NotSupportedException?

c# - 您知道执行此 "massive"linq 过滤的另一种方法吗?

sql - SQL错误中的复合键连接

c# - 大量代码重复的问题