0

好吧,我又被困住了。到目前为止,一切都很顺利。我正在从数据库中读取一些数据(通常的东西),但它给我指定的演员表是无效的错误。这不是我第一次处理这个错误。早些时候我有一个日期列。无论如何,我有一张桌子需要阅读。它的数据类型是 FLOAT。所以这是我正在使用的代码:

Dim rdr = sqlCmd.ExecuteReader
While rdr.Read
    theResults.Add(New UserData With {
        .BalAvailable = rdr.GetFloat(0),
        .branch = rdr.GetInt32(1)
     })
End While

这是在一个函数下运行的;这是班级...

Class UserData
    Dim theResults = New List(Of UserData)

    Property Branch As Integer
    Property BalAvailable As Single

End Class

这是输入部分......

Dim clientNo As Integer = 0
Dim myResults = GetData(clientNo)
If Integer.TryParse(txtInput.Text, clientNo) Then
    If myResults.Count = 1 Then
        txtBalAvail.Text = CInt(myResults(0).BalAvail)
    Else

每次我输入一个值时,它都会给我指定的强制转换无效错误。

System.Data.SqlClient.SqlBuffer.get_Int32() +5270501
System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i) +62

我相信这可能与我使用的陈述有关?

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration

我被困住了。我还尝试将 rdr.GetFloat 更改为 Double,并将 Integer.TryParse 更改为 Double.TryParse。我被困住了!

4

2 回答 2

0

强类型Get...方法(GetFloatGetInt32等)仅在字段的数据类型完全匹配时才有效。

使用该GetFieldType方法检查字段的真实数据类型,并使用适当的强类型Get...方法或无类型GetValue方法。

于 2013-05-02T19:59:33.047 回答
0
 <asp:BoundField DataField="BILLTOTAL" DataFormatString="{0:n}" 
                            HeaderText="BILL TOTAL" />

  decimal total = dt.AsEnumerable().Sum(row => row.Field<decimal>("BILLTOTAL"));
 GridView1.FooterRow.Cells[3].Text = total.ToString("N2");
于 2016-05-27T07:21:06.530 回答