2010-12-07 8 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』」

ときです私はそれが次のエラー無効な列名が表示されているウェブページを実行「」

答えて

1

BUSTYPEは、テキストまたはvarcharである場合、あなたはあなたのクエリに単一引用符を追加する必要が

UPD:私はどのようにit'l本当にわかりませんVBで、このようなもの:

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

バスの種類はnvarcar(max)です...私のクエリを編集する場所は? –

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には、単一引用符自体を含めることができます。 Using/End Using文は資源がそのことを確認します

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 

しかし、あなたがエラーの場合には、あなたのコード内で適切に物事を閉鎖していない、私のようなものに変更することをお勧めしたいですどこかで例外が発生しても正しく処理されます。