循环访问数据库表并依次获取每个记录的所有值

时间:2014-12-02 12:03:13

标签: mysql sql database vba

我需要获取表中每条记录的所有值,这样我就可以将它们添加到文本文件日志中,每行记录一次,然后从数据库中删除它们。我是新手,并已搜索过如何将SQL查询结果添加到数组或通用列表中,但我并不完全理解它们。

到目前为止,我所拥有的只是:

Private Sub btnClearAll_Click(sender As Object, e As EventArgs) Handles btnClearAll.Click
        conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Application Programming\Project\Issue Logger\Database\IssueLoggerDB.accdb"
        Dim strSQl = "TRUNCATE TABLE CurrentJobs"

        Dim commandInsert As New OleDbCommand
        commandInsert.CommandText = strSQl
        commandInsert.Connection = conn
        commandInsert.Connection.Open()
        commandInsert.ExecuteNonQuery()

        Me.ReportViewer1.RefreshReport()

    End Sub

这是针对一个Uni项目,上面是我们如何展示它,但是在研究看起来相似时我没有发现任何东西。

1 个答案:

答案 0 :(得分:0)

随意使用此程序:

Private Sub DataTableToTextFile()
    Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\Application Programming\Project\Issue Logger\Database\IssueLoggerDB.accdb"

    Using conn As OleDbConnection = New OleDbConnection(connString)
        Dim dt As New DataTable
        conn.Open()
        'Change the query. It's not a good practice to use '*' in your select queries. Please, use the column names instead.
        Dim dataAdapter As New OleDbDataAdapter("SELECT * FROM CurrentJobs", conn)
        dataAdapter.Fill(dt)

        'Change the path to your desired path
        Dim exportPath As String = "C:\Logs\"
        Dim exportFileName As String = "log.txt"

        'If directory does not exists, create it
        If Not Directory.Exists(exportPath) Then
            Directory.CreateDirectory(exportPath)
        End If

        'Write data into the text file
        Dim writer As New StreamWriter(exportPath + exportFileName)
        Try
            Dim sb As New StringBuilder

            For Each row As DataRow In dt.Rows
                sb = New StringBuilder
                For Each col As DataColumn In dt.Columns
                    sb.Append(row(col.ColumnName))
                Next
                writer.WriteLine(sb.ToString())
            Next
        Catch ex As Exception
            Throw ex
        Finally
            If Not writer Is Nothing Then writer.Close()
        End Try

        'Finally clean database table
        Dim strSQl = "Delete From CurrentJobs"
        Dim commandDelete As New OleDbCommand(strSQl, conn)
        'execute
        commandDelete.ExecuteNonQuery()
        'close connection
        conn.Close()
    End Using
End Sub