2014-12-02 53 views
0

我需要獲取表中每條記錄的所有值,這樣我才能將它們添加到文本文件日誌中,每行記錄一條,以及然後從數據庫中刪除它們。我是新手,已經搜索瞭如何將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 

這是一個統一的項目,以上就是我們一直在證明這樣做,但我沒有發現,而研究長相相似。

+0

'TRUNCATE TABLE'無可挽回地刪除從表中的所有行。如果您想將該信息推送到日誌文件,您可能希望考慮先執行SELECT * FROM CurrentJobs。 – 2014-12-02 12:18:50

+0

我打算先選擇全部,然後在for循環中完成文件寫入後運行截斷。 – Vereonix 2014-12-02 12:53:04

回答

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 
相關問題