【问题标题】:Value of type 'Integer' cannot be converted to 'System.Data.OleDb.OleDbDataReader'. vb.net“整数”类型的值无法转换为“System.Data.OleDb.OleDbDataReader”。 vb.net
【发布时间】:2014-08-28 22:03:29
【问题描述】:

我正在尝试读取最后一个发票编号并将其显示在文本框中.....

假设,表名是“MyTable”,列名是“InvoiceNumber”,它是AutoNumber,所以它是Integers!

这是我的代码:

        Dim query As String = "SELECT MAX(InvoiceNumber) FROM MyTable"
        Dim cmd As New OleDb.OleDbCommand
        Dim reading As OleDb.OleDbDataReader

        cmd.CommandText = query
        cmd.Connection = conn

        reading = Convert.ToInt32(cmd.ExecuteScalar())

        If reading.Read Then
            TextBox1.Text = reading.Item("InvoiceNumber").ToString
        End If

错误出现在“reading = Convert.ToInt32(cmd.ExecuteScalar())”上,因为我的值是“整数”类型,无法转换为“System.Data.OleDb.OleDbDataReader”。

任何帮助...?

【问题讨论】:

    标签: vb.net type-conversion


    【解决方案1】:

    变量readingOleDbDataReader,不能用于分配整数,这就是错误的原因。但是,如果您使用ExecuteScalar,则无论如何都不需要DataReader

    Dim maxNumber As Int32 = Convert.ToInt32(cmd.ExecuteScalar())
    TextBox1.Text = maxNumber.ToString
    

    【讨论】:

    • 建议在 MAX 上检查 DBNull
    • @Steve:也许此时找不到数字是例外,因为他在插入方法中。
    • 是的,也许,希望他永远不要在sql中添加where。
    猜你喜欢
    • 1970-01-01
    • 2015-08-14
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多