2011-06-29 48 views
2

因此,我正在尋找一種從SQL Server 2000數據庫導出數據並將其寫入逗號分隔文本文件的簡單方法。它的一張桌子,只有大約1000行。我是C#的新手,所以請原諒,如果這是一個愚蠢的問題。從SQL導出數據並寫入etxt文件(不能使用BCP或SP)

+0

也許嘗試搜索示例並返回一個特定的問題。這顯示沒有任何想法。 – ChrisBint

+0

我查找了一些示例,所有出現的問題都與Store procs,xp_cmdshell/BCP甚至SSIS/SSRS有關。 我知道如何通過BCP來做到這一點,但對於我來說,當我談到C#時,我不知所措了C# – Dave

回答

0

在C#中,這與使用所需工具的任何其他語言無異。

1)查詢數據庫,並收集
2)收件收集CSV格式

+0

C#對我來說是全新的......你能指點我一個可能有簡單教程的網站嗎如何做到這一點? – Dave

0

你在Windows窗體應用程序這樣做是爲了文件存儲數據嗎?如果您將數據綁定到控件(如DataGridView),那麼這很容易。您可以循環訪問控制並以此方式寫入文件。我喜歡這個,因爲如果你在應用程序中實現了過濾機制,無論用戶過濾了什麼,都可以寫入文件。這是我以前做過的。如果你正在使用某種收集而沒有太多麻煩,你應該可以調整它。

private void exportCsv() 
    { 
     SaveFileDialog saveFile = new SaveFileDialog(); 
     createSaveDialog(saveFile, ".csv", "CSV (*csv)|*.csv)"); 
     TextWriter writer = new StreamWriter(saveFile.FileName); 
     int row = dataGridView1.Rows.Count; 
     int col = dataGridView1.Columns.Count; 

     try 
     { 
      if (saveFile.FileName != "") 
      { 
       for (int i = 0; i < dataGridView1.Columns.Count; i++) 
       { 
        writer.Write(dataGridView1.Columns[i].HeaderText + ","); 
       } 

       writer.Write("\r\n"); 
       for (int j = 0; j < row - 1; j++) 
       { 
        for (int k = 0; k < col - 1; k++) 
        { 
         writer.Write(dataGridView1.Rows[j].Cells[k].Value.ToString() + ","); 
        } 
        writer.Write("\r\n"); 
       } 
      } 
      MessageBox.Show("File Sucessfully Created!", "File Saved", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
     } 
     catch 
     { 
      MessageBox.Show("File could not be created.", "Save Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
     finally 
     { 
      writer.Close(); 
      saveFile.Dispose(); 
     } 

    } 
+0

我還沒有開始,因爲我更喜歡數據庫傢伙。 (所以沒有在Windows應用程序窗體)他們只是在這裏說...我們需要它在C#中,並需要在下週末。我喜歡學習新東西,但沒有一個地方可以開始巨大的痛苦。 – Dave

6

這是一個非常簡單的任務,但您需要了解SqlClient命名空間和您掌握的不同對象。您需要注意的是,雖然對於SQL Server 2000和更低版本的異步方法不受支持,所以它們將全部阻塞。

請注意,這是一個非常粗略的例子,我沒有對此進行測試,但這將是一種通用方法。

string connectionString = "<yourconnectionstringhere>"; 
using (SqlConnection connection = new SqlConnection(connectionString)) { 
    try { 
     connection.Open(); 
    } 
    catch (System.Data.SqlClient.SqlException ex) { 
     // handle 
     return; 
    } 
    string selectCommandText = "SELECT * FROM <yourtable>"; 
    using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommandText, connection)) { 
     using (DataTable table = new DataTable("<yourtable>")) { 
      adapter.Fill(table); 
      StringBuilder commaDelimitedText = new StringBuilder(); 
      commaDelimitedText.AppendLine("col1,col2,col3"); // optional if you want column names in first row 
      foreach (DataRow row in table.Rows) { 
       string value = string.Format("{0},{1},{2}", row[0], row[1], row[2]); // how you format is up to you (spaces, tabs, delimiter, etc) 
       commaDelimitedText.AppendLine(value); 
      } 
      File.WriteAllText("<pathhere>", commaDelimitedText.ToString()); 
     } 
    } 
} 

你會希望尋找到一些資源:

我也不清楚自己的需求是什麼,或者你爲什麼做這個任務,但也有可能是相當多的工具,有可能已經爲你做這個(如果這是一次性的事情),因爲這不是一個不常見的任務。

+0

好的,感謝這些信息...我同意,我不確定爲什麼這會落在我的盤子上,但是我已經將它用作學習體驗。至於多久我們這樣做......幾乎從不...... – Dave

相關問題