首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 讀取文字檔並匯入資料庫的完整實作範例

     編輯:ASP.NET 基礎

前言

在 ASP.NET 開發中,經常需要將結構化的文字檔(如 CSV、以特定分隔符號分隔的資料)批次匯入 SQL Server 資料庫。本文提供一個完整的程式碼範例,示範如何使用 StreamReader 逐行讀取檔案、解析欄位,並透過 ADO.NET 寫入資料表。

核心程式碼實作

以下範例假設文字檔每行以 | 分隔四個欄位,對應資料表 TableDX 的 number、name、produce、xinghao 欄位:

StreamReader sr = new StreamReader(@"E:\123.txt"); // 檔案路徑
string oneLine;

while ((oneLine = sr.ReadLine()) != null)
{
    string[] str = oneLine.Split('|');
    
    // 建議使用參數化查詢防止 SQL Injection,此處為示範原始邏輯
    string sql = "INSERT INTO TableDX (number, name, produce, xinghao) " +
                 "VALUES ('" + str[0] + "', '" + str[1].Replace("'", "''") + "', '" + str[2] + "', '" + str[3] + "')";
    
    string strConn = "Data Source=.;Initial Catalog=master;User ID=sa;Password=sa";
    using (SqlConnection conn = new SqlConnection(strConn))
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            int res = cmd.ExecuteNonQuery();
        }
    }
}
sr.Close();
Response.Write("<script>alert('匯入成功');</script>");

關鍵點解析

  • StreamReader:以流的方式讀取大型文字檔,避免一次性載入記憶體。
  • Split('|'):依分隔符號拆分欄位,實務上需處理欄位數不足或空值情況。
  • Replace("'", "''"):簡易跳脫單引號,但強烈建議改用參數化查詢(SqlParameter)以確保安全。
  • using 區塊:確保 SqlConnection、SqlCommand、StreamReader 正確釋放資源。

進階建議:改用參數化查詢

為防止 SQL 注入並提升效能,建議將 SQL 改寫如下:

string sql = "INSERT INTO TableDX (number, name, produce, xinghao) VALUES (@num, @name, @prod, @model)";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
    cmd.Parameters.AddWithValue("@num", str[0]);
    cmd.Parameters.AddWithValue("@name", str[1]);
    cmd.Parameters.AddWithValue("@prod", str[2]);
    cmd.Parameters.AddWithValue("@model", str[3]);
    cmd.ExecuteNonQuery();
}

總結

本範例展示了基本的文字檔匯入流程。實際專案中應加入錯誤處理(try-catch)、交易控制(SqlTransaction)、批次寫入(SqlBulkCopy)等機制,以應對大量資料與異常情況。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved