2010-12-07 30 views
0
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged 
    Dim SQLData As New System.Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True") 
    Dim cmdSelect As New System.Data.SqlClient.SqlCommand("SELECT * FROM a1_bustype where bustype=" & DropDownList1.SelectedItem.Text.ToString, SQLData) 
    SQLData.Open() 
    Dim dtrReader As System.Data.SqlClient.SqlDataReader = cmdSelect.ExecuteReader() 
    If dtrReader.HasRows Then 
     While dtrReader.Read() 
      TextBox1.Text = dtrReader("buscode") 
     End While 
    End If 

    dtrReader.Close() 
    SQLData.Close() 
End Sub 

我有以下的数据库TABEL进入......在bustype一列,我..A/C座沃尔沃客车代码是S41的SqlClient命令错误:“无效的列名‘A’”

时我运行它显示了以下错误无效的列名的网页“A”

回答

1

如果bustype是文本或varchar你有单引号添加到您的查询

UPD:我并不真的知道如何it'l在vb中,像这样:

"SELECT * FROM a1_bustype where bustype='" & DropDownList1.SelectedItem.Text.ToString & "'" 
+0

总线类型是nvarcar(最大)...在哪里编辑我的查询? – 2010-12-07 07:11:30

0

由于X2在他回答说,你需要围绕单引号的字符串,所以更改启动Dim cmdSelect...行是:

Dim cmdSelect As New System.Data.SqlClient.SqlCommand(String.Format("SELECT * FROM a1_bustype where bustype='{0}'", DropDownList1.SelectedItem.Text.Replace("'", "''")), SQLData) 

这也将使其支持,如果在该值DropDownList本身可以包含单引号。

但是,你没有正确关闭的事情在你的代码中的错误的情况下,我会建议其更改为类似:

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged 
    Using SQLData As New System.Data.SqlClient.SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True") 
     Using cmdSelect As New System.Data.SqlClient.SqlCommand(String.Format("SELECT * FROM a1_bustype where bustype='{0}'", DropDownList1.SelectedItem.Text.Replace("'", "''")), SQLData) 
      SQLData.Open() 
      Using dtrReader As System.Data.SqlClient.SqlDataReader = cmdSelect.ExecuteReader() 
       If dtrReader.HasRows Then 
        While dtrReader.Read() 
         TextBox1.Text = dtrReader("buscode") 
        End While 
       End If 
      End Using 
     End Using 
    End Using 
End Sub 

Using/End Using语句将确保资源即使在某处发生异常,也会正确处置。