从SQL Server vb.net填充Combobox

时间:2015-12-12 19:06:57

标签: sql-server vb.net combobox

我尝试使用SQL Server中的数据填充组合框。到目前为止这是我的代码。错误周围有星号。另外,请忽略评论。

Private Sub frmOriginal_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim connetionString As String = Nothing
    Dim sqlcon As SqlConnection
    Dim command As SqlCommand
    Dim adapter As New SqlDataAdapter()
    Dim ds As New DataSet()
    Dim i As Integer = 0
    Dim sql As String = Nothing

    connetionString = "Data Source = RENEE\SQLEXPRESS;Initial Catalog=Stocks;Integrated Security = True"
    sql = "select * from TickerSymbol"

    sqlcon = New SqlConnection(connetionString)

    Try
        sqlcon.Open()
        command = New SqlCommand(sql, sqlcon)
        adapter.SelectCommand = command
        adapter.Fill(ds)
        adapter.Dispose()
        command.Dispose()
        sqlcon.Close()

        cboID.DataSource = ds.Tables(0)
        cboID.ValueMember = "TickerSymbol"
        cboID.DisplayMember = "TickerSymbol"
    Catch ex As Exception
        'MessageBox.Show("Can not open connection ! ")'
    End Try

End Sub

Private Sub cboID_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboID.SelectedIndexChanged
    Dim dr As SqlDataReader
    Dim command As New SqlCommand *(queryString, connection)*
    Dim dataReader As SqlDataReader = command.ExecuteReader()
    Dim sqlcon As SqlConnection
    Dim cmd As SqlCommand

    sqlcon = New SqlConnection
    sqlcon.ConnectionString = "Data Source = RENEE\SQLEXPRESS;Initial Catalog=Stocks;Integrated Security = True"

    Try
        sqlcon.Open()
        cmd = New SqlCommand

        cmd.CommandText = " select * from TickerSymbol where TickerSymbol = '" & cboID.Text & "'"

        cmd = New SqlCommand(cmd.CommandText, sqlcon)
        dr = cmd.ExecuteReader

        While dr.Read()

            'TxtID.Text = dr.GetInt32(0)'
            'TxtSN.Text = dr.GetString(1)'
            'TxtGender.Text = dr.GetString(2)'
            'TxtPhone.Text = dr.GetInt32(3)'
            'TxtAdrress.Text = dr.GetString(4)'

            lblCompanyName.Text = dataReader.GetString(1)
            lblPurchasePrice.Text = dataReader.GetSqlMoney(2)
            lblQtyPurchased.Text = dataReader.GetInt32(3)
            lblPurchaseDate.Text = dataReader.GetDateTime(4)

        End While

        sqlcon.Close()
    Catch ex As SqlException
        MessageBox.Show(ex.Message)
    End Try
    sqlcon.Dispose()
End Sub

1 个答案:

答案 0 :(得分:0)

请使用参数化查询,因为这会正确格式化值,例如文本中的撇号将使用参数正确转义,而您无需处理它们,日期也将正确格式化。代码也更清晰。

示例,Framework 3.5及更高版本的语法。如果多次使用连接字符串,则考虑将其放在私有变量中或在项目属性下的My.Settings下。

Using cn As New SqlConnection With {.ConnectionString = "Data Source = RENEE\SQLEXPRESS;Initial Catalog=Stocks;Integrated Security = True"}
    Using cmd As New SqlCommand With {.Connection = cn, .CommandText = "select * from TickerSymbol where TickerSymbol = @TickerSymbol"}
        cmd.Parameters.AddWithValue("@TickerSymbol", cboID.Text)
        cn.Open()
        Dim dr As SqlDataReader = cmd.ExecuteReader
        If dr.HasRows Then
            While dr.Read
                '
                '
                '
            End While
        End If
    End Using
End Using