封装SqlHelper类遇到插入数据的问题?

封装一个ADO.net,插入一条数据不能显示插入内容而是变量名
调用封装方法

 [HttpPost]
 public string Insert(string userName, string password, string userLevel, string userNo)
 {  
SqlHelper sqlHelper = new SqlHelper();
     SqlParameter[] sqlParameters = new SqlParameter[]
     {
         new SqlParameter("@UserName",userName),
         new SqlParameter("@Password",password),
         new SqlParameter("@UserLevel",userLevel),
         new SqlParameter("@UserNo",userNo)
     };
     sqlHelper.ExecuteNonQuery("INSERT INTO users ( UserName, Password, UserLevel, UserNo ) VALUES ( '@UserName', '@Password', '@UserLevel', '@UserNo' )", sqlParameters );
     return "数据插入成功!";
 }

封装的方法

 public int ExecuteNonQuery(string cmdText,params SqlParameter[] sqlParameters)
 {
     using SqlConnection sqlConnection = new SqlConnection(ConnectionStr);
     sqlConnection.Open();
     SqlCommand sqlCommand = new SqlCommand(cmdText,sqlConnection);
     sqlCommand.Parameters.AddRange(sqlParameters);
     return sqlCommand.ExecuteNonQuery();
 }

设置断点后看到,形参已经拿到输入内容,但是变量始终没有赋值成功。
image.png

阅读 575
avatarAI BotBETA

你的问题在于你的INSERT语句中,你试图将参数值插入到字符串中,这是不正确的。在你的INSERT语句中,你不需要再次引用参数名称。你只需要在VALUES部分提供参数值即可。

这是修正后的代码:

[HttpPost]
public string Insert(string userName, string password, string userLevel, string userNo)
{  
    SqlHelper sqlHelper = new SqlHelper();
    SqlParameter[] sqlParameters = new SqlParameter[]
    {
        new SqlParameter("@UserName", userName),
        new SqlParameter("@Password", password),
        new SqlParameter("@UserLevel", userLevel),
        new SqlParameter("@UserNo", userNo)
    };
    sqlHelper.ExecuteNonQuery("INSERT INTO users (UserName, Password, UserLevel, UserNo) VALUES (@UserName, @Password, @UserLevel, @UserNo)", sqlParameters);
    return "数据插入成功!";
}

在这个修正后的代码中,我已经移除了在INSERT语句中的参数名称引用。现在,参数值将会正确地被传递到你的SQL命令中。希望这能解决你的问题。

1 个回答

去掉引号。

image.png

加了引号就是个普通字符串、而不是参数了。

logo
Microsoft
子站问答
访问
宣传栏