2012-06-28 55 views
0

我试图改变一个SqlDataSource的参数,但代码似乎失败了,换句话说我似乎失败了。无法让SqlDataSource.SelectParameters.Add工作

下面是代码:

 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) 

以上是工作的select命令。

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

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

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

如果你说你已经解决了需要回答这个问题,然后还剩下什么疑问到底 – HatSoft

回答

0

也许不是

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

应该

Parameter name = new Parameter("@name", SqlDbType.NVarChar, Convert.ToString(id));