0

次のコードでは、SqlDataReader 'dr' は、名前に空白が含まれるサブジェクトの「SubjectCode」を読み取りません。たとえば、科目表から英語、社会科、原価計算の原則など。

したがって、誰かがすぐに私をとても親切に助けてくれたら、私はとても感謝しています.

cmd = New SqlCommand( _
    "select subjectCode from ProgramDetails.subjects where subjectname='" & _
    Trim(subname) & " ' ", cn)
dr = cmd.ExecuteReader
If dr.Read Then
    subcode = dr(0)
End If
dr.Close()
4

2 に答える 2

3
  1. あなたはSQL-Injectionに対してオープンです、使用してくださいSQL-Parameters
  2. 最後に空白がありますが、これは望ましくないと思います
  3. 代わりLIKEにワイルドカードを使用したい場合があります。%

例えば:

Dim sql = "Select subjectCode From ProgramDetails.subjects where subjectname Like @subname"
Using con = New SqlConnection(connectionString)
    Using cmd = New SqlCommand(sql, con)
        cmd.Parameters.AddWithValue("@subname", String.Format("%{0}%", "english"))
        Con.Open()
        Using rd = cmd.ExecuteReader()
            While rd.Read()  
                Dim subjectCode = rd.GetString(0)
                ' ... '
            End While
        End Using
    End Using
End Using
于 2013-01-26T14:24:21.233 に答える
0

RTRIMを使用するだけです

cmd = New SqlCommand("select RTRIM(subjectCode) from ProgramDetails.subjects " + _
                     "where subjectname Like '" & Trim(subname) & "%'", cn)
dr = cmd.ExecuteReader
If dr.Read Then
    subcode = dr(0)
End If
dr.Close()
于 2013-01-26T14:17:31.290 に答える