0

我正在尝试动态更改 SqlDataSource 的参数,但代码似乎失败了,或者换句话说我似乎失败了。

这是代码:

        int id = 0;

        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RHOGEConnection"].ConnectionString);
        SqlCommand getId = new SqlCommand(null, conn);
        SqlParameter name = new SqlParameter("@name", SqlDbType.NVarChar);
        name.Value = SelectTeam.SelectedValue;
        getId.Parameters.Add(name);
        /* getId.CommandText = */ //changed to a select statement that gets a number

        try
        {
            conn.Open();
            id = (int)getId.ExecuteScalar();
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

        SqlDataSource2.SelectParameters.Add(new Parameter("getId", TypeCode.Int16, Convert.ToString(id)));

现在我知道获取数字的代码(SqlDataSource2 上方的行)可以正常工作,因为我将它打印在屏幕上并且它们看起来是正确的。我还尝试了 SQL Management Studio 中的 SqlDataSource2 选择命令,它产生了正确的结果。所以我最好的猜测是将参数添加到参数列表中存在问题。

SELECT [TeamName] FROM [Teams] where PlayerIdent = (select playerId
                from Players where PlayerShirtId = @getId)

以上是有效的选择命令。

您是否同意参数事物是正确的诊断,如果是,我应该怎么做?

编辑:我能够通过以下方式解决这个问题。

SqlDataSource2.SelectParameters["getId"].DefaultValue = Convert.ToString(id);
4

1 回答 1

0

也许代替

SqlParameter name = new SqlParameter("@name", SqlDbType.NVarChar);

它应该是

Parameter name = new Parameter("@name", SqlDbType.NVarChar, Convert.ToString(id));
于 2013-03-06T14:38:03.990 回答