0

我正在尝试从数据库中获取数据(我已经完成并且知道这是可行的)但是我想将数据推送到变量中。

我看不出有什么问题,目前“cmd.select”周围有一个错误,所以如果有人能指出我正确的方向,那就太好了!

  Dim cn As SqlConnection = New SqlConnection()
  Dim cmd As SqlCommand = New SqlCommand()
  Dim sqladp As New SqlDataAdapter()
  Dim ds As New DataSet()
  cmd.Parameters.Clear()

  cn.ConnectionString = ConfigurationManager.ConnectionStrings("PemcoConnectionString").ConnectionString
  cmd.Connection = cn

  GridView2.Visible = True
  cmd.Connection = cn
  cmd.CommandText = "spUserResultsDetails"
  cmd.CommandType = CommandType.StoredProcedure
  Session.Item("ID") = (sender.SelectedValue.ToString)
  cmd.Parameters.AddWithValue("@ID", Session.Item("ID"))

  For Each datarow As Data.DataRowView In cmd.Select(DataSourceSelectArguments.Empty)
      sEmailAddress = datarow("UserEmail")
  Next

  sqladp.SelectCommand = cmd
  sqladp.Fill(ds)
4

1 回答 1

1

有很多事情需要改进,这应该有效:

Using cn = New SqlConnection(ConfigurationManager.ConnectionStrings("PemcoConnectionString").ConnectionString))
    Using da = New SqlDataAdapter("spUserResultsDetails", cn)
        da.SelectCommand.CommandType=CommandType.StoredProcedure
        da.SelectCommand.Parameters.AddWithValue("@ID", CInt(Session.Item("ID")))
        Dim table = New Data.DataTable()
        da.Fill(table)
        GridView2.DataSource = table
        GridView2.DataBind()
    End Using
End Using

总结:

  • 始终使用 using 语句来确保一次性对象即使在出错时也得到处置(关闭)
  • SqldataAdapter如果要填充 a ,请使用a DataTable,无需使用填充打开/关闭它,使用它的SelectCommand属性来获取对SqlCommand
  • 将表格设置为DataSource您的表格GridView并对其进行数据绑定
  • 如果使用AddWithValue,则应将传递的对象转换为正确的类型,否则无法推断出正确的类型
于 2013-06-20T15:37:57.243 回答