1

请原谅我问,我的 if else 和 select case 语句只会转到 ELSE 选项。下面是我的代码

lblStudentName.Text = CStr(studentInfo.stuFullName)
lblStudentBirthCert.Text = CStr(studentInfo.birthCert)

Dim conn As New SqlConnection
Dim cmd As New SqlCommand

conn.ConnectionString = ("server = A-PC\SQLEXPRESS;database=studentManagement;integrated security=true")
conn.Open()

cmd.Connection = conn
cmd.Parameters.AddWithValue("@id", lblStudentBirthCert.Text)
cmd.CommandText = ("SELECT paymentType From payment Where birthcert=@id")

Dim reader As SqlDataReader = cmd.ExecuteReader()
Dim tempPaymentType As String

While reader.Read()
    Dim tempPaymentType = reader.GetString(0)
    Select Case tempPaymentType
        Case "a"
            txtFeeA.Text = tempPaymentType
        Case "b"
            txtFeeB.Text = tempPaymentType
        Case "c"
            txtFeeC.Text = tempPaymentType
        Case "d"
            txtFeeD.Text = tempPaymentType
        Case "e"
            txtFeeE.Text = tempPaymentType
        Case Else
            txtFeeF.Text = tempPaymentType
    End Select
End While
reader.Close()

出于某种原因,它只会转到 else 并在 txtFeeF.text 中打印出来。查询将返回 6 个结果 btw,a 到 f。与 if else 语句相同。如果没有任何 if else 和 select 语句,输出将是 f,这是 reader 中的最后一个。任何帮助是极大的赞赏。

If tempPaymentType.Equals("a") Then
            txtFeeA.Text = tempPaymentType.ToString
        End If
4

2 回答 2

2

添加一行来帮助您调试:

    Dim tempPaymentType = reader.GetString(0)
    Debug.Print (String.Format("tempPaymentType: {0}", tempPaymentType))
    Select Case tempPaymentType

可能有很多原因,但你没有提供足够的信息。例如,字母是不同的大小写吗?(“a”与“A”)

更改此代码可能会有所帮助:

Dim tempPaymentType As String

While reader.Read()
    tempPaymentType = reader.GetString(0)

我很惊讶它甚至可以使用额外的Dim语句来构建。

于 2013-04-21T20:45:42.520 回答
2

尝试添加

Trim().ToLower() 

在你之后

GetString(0) 

看看是否有大小写问题或多余的空格。如果数据库字段是字符字段,它会添加额外的空格,但如果是 VARCHAR(),它应该修剪它..

于 2013-04-22T02:07:32.887 回答