参数“ @id”,将数据插入数据库时​​未提供

时间:2018-07-06 17:28:39

标签: c# sql sql-server database

我正在尝试基于id插入数据,并且已在参数中添加了id,但错误仍然显示未提供id。

public static int ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] param)
{
    using (SqlConnection conn = new SqlConnection(GetConnectionString))
    {
        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.CommandType = CommandType.StoredProcedure;
        PrepareCommand(sql, conn, cmd, type, param);
        return cmd.ExecuteNonQuery();   // Error here (unhandled exception)
    }
}

插入数据功能

public int AddUsers(Users user)
{
    int rel = 0;
    string sql = "INSERT INTO Student 
                  VALUES (@id, @groupId, @userInfo, @imagePath)";

    SqlParameter[] param = {
         new SqlParameter("@id", user.uid),
         new SqlParameter("@groupId", user.groupId),
         new SqlParameter("@userInfo",user.userInfo),
         new SqlParameter("@imagePath",user.imagePath),
    };

    rel = SqlHelper.ExecuteNonQuery(sql, CommandType.Text, param);

    return rel;
}

如果id不为空,例如示例,我将调用该方法。

 if(id != 0)
 {
    int rel = AddUsers(user);
 }

1 个答案:

答案 0 :(得分:2)

您正在检查id != 0,但是将user.uid用作@id的参数。 user.uid是什么类型?并且确保它是!= null,因为如果您将null添加为参数值,则将其视为未提供。如果需要将NULL插入数据库,请使用DbNull.Value