Database 如何用数据库中的数据填充数组

Database 如何用数据库中的数据填充数组,database,vb.net,multidimensional-array,Database,Vb.net,Multidimensional Array,我正在从vb.net中的access数据库中读取一个表。我想知道某一年有多少张唱片。如果数组中不存在年份,我想添加它并将计数设置为1。当数组中已经存在年份时,我希望将计数增加到2 例如,DOCUMENT1.2019在数组中创建计数为1的2019年,然后DOCUMENT2.2019将2019年的计数设置为2,然后DOCUMENT1.2018创建2018年并将计数设置为1。 等等 所以我不知道当我开始的时候阵列会有多大 Dim sSQL As String Dim s

我正在从vb.net中的access数据库中读取一个表。我想知道某一年有多少张唱片。如果数组中不存在年份,我想添加它并将计数设置为1。当数组中已经存在年份时,我希望将计数增加到2

例如,DOCUMENT1.2019在数组中创建计数为1的2019年,然后DOCUMENT2.2019将2019年的计数设置为2,然后DOCUMENT1.2018创建2018年并将计数设置为1。 等等

所以我不知道当我开始的时候阵列会有多大

        Dim sSQL As String
        Dim sGetString As String
        Dim sPartString As String
        sSQL = "SELECT [Document Name] FROM Archief ORDER BY Id DESC"
        Dim cmd As New OleDb.OleDbCommand(sSQL, con)
        Dim read As OleDb.OleDbDataReader = cmd.ExecuteReader()
        If read.HasRows Then
            While read.Read()
                sGetString = read.Item("Document Name").ToString()
                sPartString = Mid(sGetString, Len(sGetString) - 11, 4)  'retrieve the year like 2019
            End While
        End If

“结束状态”将概述年份以及该年度的文档数量。
当读卡器处于活动状态时,连接需要保持打开状态。您不希望在连接打开时进行大量处理

需要释放命令和数据读取器。即使出现错误,使用`Using…End-Using blocks也会解决这个问题。在使用连接的方法中声明和处置连接

让数据库来完成这项工作。Access提供了一些可以在查询中使用的字符串操作函数。您还可以将Count与Group By一起使用,以获得所需的结果

Private Sub GetYearCountData()
    Dim sSQL = "SELECT Right([Document Name],4) As [Year], Count([Year]) FROM Archief  Group By Right([Document Name],4) Order By Right([Document Name],4) ;"
    Dim dt As New DataTable
    Using cmd As New OleDbCommand(sSQL, New OleDbConnection(ConStr))
        cmd.Connection.Open()
        Using reader = cmd.ExecuteReader
            dt.Load(reader)
        End Using
    End Using
    DataGridView1.DataSource = dt
End Sub

不要使用数组,而是使用
列表(t)
。从表中获取正确的字符稍微复杂一些:DOCUMENT.20190131.PDF Mid(sGetString,Len(sGetString)-11,4)Access还有一个Mid函数。只需替换并设置Mid。让我知道这是否适用于您。工作正常:Dim sSQL=“选择Mid([文档名称]),Len([文档名称])-11,4)作为[年],按Mid([文档名称])从Archief组计数([年]),Len([文档名称])-11,4)按Mid([文档名称])订购,Len([文档名称]-11,4);”发现了代码中的另一个缺陷,因为某些文档的扩展名为4个字母,如.DOCX或PPTX,因此代码没有提取正确的字符,这不是代码中的缺陷。这是你问题中的一个缺陷。