首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# 讀取數據庫寫入 TXT 文件:File.WriteAllText 一行實現

     編輯:程式設計疑難解答

場景

點擊按鈕讀取兩張表(MAT_NR、PANELID),組合字符串寫入指定路徑文本文件。

核心代碼

private void GetData() {
    try {
        DataTable dtMat = SQLUtility.Select("SELECT MAT_NR FROM ADE_LOS WHERE LOS_NR = @los", new SqlParameter("@los", txtLOS_NR.Text.Trim()));
        DataTable dtPanel = SQLUtility.Select("SELECT PANELID FROM FCBDB.dbo.PANELTAB WHERE LOSID = @los", new SqlParameter("@los", txtLOS_NR.Text.Trim()));

        var sb = new StringBuilder();
        foreach (DataRow row in dtMat.Rows) sb.AppendLine($"MAT_NR={row[0]}");
        foreach (DataRow row in dtPanel.Rows) sb.AppendLine($"PAN={row[0]}");

        string filePath = @"C:\Export\data.txt"; // 指定目標路徑
        File.WriteAllText(filePath, sb.ToString(), Encoding.UTF8);
        MessageBox.Show("導出成功:" + filePath);
    } catch (Exception ex) {
        MessageBox.Show("錯誤:" + ex.Message);
    }
}

關鍵點

  • 使用參數化查詢(@los)防止 SQL 注入,原代碼字符串拼接極不安全。
  • StringBuilder 高效拼接大量字符串,避免頻繁內存分配。
  • File.WriteAllText(path, content, encoding) 一次性寫入文件,自動創建/覆蓋、關閉流,極其便捷。
  • 路徑建議從配置文件或 SaveFileDialog 獲取,而非硬編碼。

擴展:異步導出大數據量

若數據量大(>10萬行),應使用 StreamWriter 流式寫入並配合 async/await 避免 UI 凍結:

using (var sw = new StreamWriter(filePath, false, Encoding.UTF8)) {
    foreach (var row in dtMat.Rows) await sw.WriteLineAsync($"MAT_NR={row[0]}");
    // ...
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved