iT邦幫忙

0

vb.net作匯出,從SQL Server轉成txt檔

ping9 2013-07-09 19:52:0010527 瀏覽
  • 分享至 

  • xImage

請問市面上有沒有哪本書有這個範例
vb.net作匯出,從SQL Server轉成txt檔
或者能否提供程式給我作參考
謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
10
賽門
iT邦超人 1 級 ‧ 2013-07-09 21:45:04
最佳解答

我組合的程式碼, 沒測試過, 應該稍加修改與Debug即可...

<pre class="c" name="code">//宣告SQL Server連線字串
Dim con As New SqlConnection
Dim cmd As New SqlCommand
//宣告輸出TXT檔名
Dim FILE_NAME As String = "C:\Users\Owner\Documents\EmployeeList.txt"
//開啟檔案I/O
Dim objWriter As New System.IO.StreamWriter( FILE_NAME )
//連線SQL Server開始抓資料
Try
  con.ConnectionString = "Server=(local)\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI"
  con.Open()
  cmd.Connection = con
  cmd.CommandText = "SELECT EmployeeID, FirstName, LastName FROM Employee ORDER BY EmployeeID"
  Dim lrd As SqlDataReader = cmd.ExecuteReader()

  While lrd.Read()
    //把資料寫入TXT檔, 寫入格式如何, 就自行修改一下囉...
    objWriter.WriteLine( ldr.Item(0) & ", " & ldr.Item(1) & ", " & ldr.Item(2))
    Next
  End While

  objWriter.Close()

Catch ex As Exception
 MessageBox.Show("Error while retrieving records on Employee table..." & ex.Message, "Load Records")
Finally
 con.Close()
End Try
ping9 iT邦新手 4 級 ‧ 2013-07-10 20:42:12 檢舉

Dim lrd As SqlDataReader = cmd.ExecuteReader()
請問這句是什麼意思呢?
謝謝

賽門 iT邦超人 1 級 ‧ 2013-07-10 20:58:05 檢舉

宣告一個sqldatareader, 也就是一個擷取SQL Server資料的暫存區.
該暫存區的內容就是CommandText的SELECT命令抓出來的資料錄集合.

建議你先Google VB.NET的sqldatareader元件用法, 不要只會發問又主動不學習、不主動思考.
古人有言: 學而不思則殆.

推~賽門大太熱心了

其實這個問題的答案, google就可以找到
發問者在發問前,自己要先做功課研究

慎思, 慎問
尊重他人, 也是尊重自己

6
player
iT邦大師 1 級 ‧ 2013-07-09 20:30:45

1.你要先從SQL Server抓資料, 用ADO.NET或LINQ
2.你的VB.NET是寫成ASP.NET還是Windows From, 前者要輸出HTTP檔頭通知瀏覽器另存新檔, 後者要開對話框給User選存檔位置與檔名

用C#寫過, 但是之前硬碟毀了
不然就可以轉成 VB.NET 給你
所以死心吧

10
外獅佬
iT邦大師 1 級 ‧ 2013-07-09 23:58:41
<pre class="c" name="code">
Dim TextFileConn As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;Extended Properties=Text;HDR=NO;")  
TextFileConn.Open()  
Dim TextFileCmd As New System.Data.OleDb.OleDbCommand("SELECT * INTO [Employee#txt] FROM [Employee] IN '' [ODBC;Driver={SQL Server};Server=(local);Database=Northwind;Trusted_Connection=yes];", TextFileConn)  
TextFileCmd.ExecuteNonQuery()  
TextFileConn.Close()  

開心

外獅佬 iT邦大師 1 級 ‧ 2013-07-09 23:59:49 檢舉

直接用Jet OleDB引擎去模擬bcp...這樣比較快
謝謝

賽門 iT邦超人 1 級 ‧ 2013-07-10 00:29:36 檢舉

這是比較有經驗的做法, 只是, 如何格式化輸出結果呢?

外獅佬 iT邦大師 1 級 ‧ 2013-07-10 01:03:40 檢舉

simon581923提到:
格式化輸出結果

這個呢...要在SQL Command裡頭下功夫了謝謝

我要發表回答

立即登入回答