指定演员表无效

时间:2014-05-23 04:45:18

标签: vb.net oledb oledbexception

这是一个从数据库中检索值的代码,但我的问题是它抛出了一个异常,说" InvalidCastException未处理指定的强制转换是无效的"。我现在很困惑出了什么问题,代码和表格如下所示。

以下是代码:

Public connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" & Application.StartupPath & 
                "\TestData.accdb; Persist Security info = false"
Public Conn As New OleDbConnection

Private Sub TestForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loard
    Conn.ConnectionString = connstring
    Conn.Open()

    LoadValue( )

End Sub 

Private Sub LoadValue( )
    Dim i As Integer    
    Dim cmd As OleDbCommand = New OleDbCommand

    With cmd
        .CommandText = "SELECT MAX(Guard_ID) FROM Guard"
        .CommandType = CommandType.Text
        .Connection = Conn
        .ExecuteNonQuery()

        Dim reader As OleDbDataReader = cmd.ExecuteReader


        If reader.Read Then

            TextBox1.Text = reader.GetString(0)
        i = TextBox1.Text + 1
        TextBox1.Text = i

            reader.Close()
        End If
    End With

End Sub 

表格参考:

enter image description here

异常错误:

enter image description here

我现在真的很困惑为什么代码不起作用,任何帮助和建议都会很乐意接受。提前谢谢。

1 个答案:

答案 0 :(得分:3)

试试这个,

Private Sub LoadValue()
    Dim i As Integer
    Dim cmd As OleDbCommand = New OleDbCommand

    With cmd
        .CommandText = "SELECT MAX(Guard_ID) FROM Guard"
        .CommandType = CommandType.Text
        .Connection = Conn
        .ExecuteNonQuery()

        Dim reader As OleDbDataReader = cmd.ExecuteReader


        If reader.Read Then

            Dim tmpVal As Object = reader.Item(0)
            TextBox1.Text = IIf(IsDBNull(tmpVal), "0", tmpVal.ToString())

            i = CInt(TextBox1.Text) + 1
            TextBox1.Text = i.ToString()

            reader.Close()
        End If
    End With

End Sub