微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net 中 MS Access 数据库中的行数

如何解决vb.net 中 MS Access 数据库中的行数

有谁知道我做错了什么? 我正在尝试计算 MS 访问数据库中的行数

这是我尝试过的代码

私有子 Form1_Load(sender As Object,e As EventArgs) 处理 MyBase.Load

    Dim conn As New OleDbConnection
    conn.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Test Database\Database.accdb")
    conn.open()
    Dim strsql As String
    strsql = "Select count(*) from TABLA"             '" select Panel from PANELS where ID"
    Dim cmd As New OleDbCommand(strsql,conn)
    Dim myreader As OleDbDataReader

    myreader = cmd.ExecuteReader
    myreader.Read()
    PanelsInDatabase = myreader.Item(strsql)
    Label1.Text = PanelsInDatabase
    conn.Close()

    For i As Integer = 0 To PanelsInDatabase - 1
        CreatePanels()
        CreateDeleteButton(_PanelName)
        CreateLabels(_PanelName)
        CreateLabel2(_PanelName)
    Next

End Sub

提前致谢

(如果我启动代码,我会得到一个错误system.indexOutOFRangeException)

解决方法

选择单个值时使用 ExecuteScalar

    Dim connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Test Database\Database.accdb"
    Dim sql = "select count(*) from tabla"        

    Using cmd As New OleDbCommand(sql,New OleDbConnection(connStr))
      cmd.Connection.Open()
      Dim ct = CInt(cmd.ExecuteScalar())

    End Using
,

我已将您的用户界面代码与数据库代码分开。当然,我不知道CreatePanels 在做什么或_PanelName 来自哪里。在您的 UI 代码中,您调用 GetTABLACount 函数,该函数以整数形式返回。

在数据库代码中,使用 Using...End Using 块作为连接和命令,这样即使出现错误也能正确处理它们。

由于您只检索单个数据,您可以使用 .ExecuteScalar 返回结果集第一行的第一列 As Object。使用 CInt 获取 Integer

Private Sub Button2_Click(sender As Object,e As EventArgs) Handles Button2.Click
    Dim count = GetTABLACount()
    Label1.Text = count.ToString
    For i As Integer = 0 To count - 1
        CreatePanels()
        CreateDeleteButton(_PanelName)
        CreateLabels(_PanelName)
        CreateLabel2(_PanelName)
    Next
End Sub

Private Function GetTABLACount() As Integer
    Dim dbCount As Integer
    Using conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\Test Database\Database.accdb"),cmd As New OleDbCommand("Select count(*) from TABLA",conn)
        conn.Open()
        dbCount = CInt(cmd.ExecuteScalar)
    End Using
    Return dbCount
End Function

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。