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

C# 檔案存取資料庫完整實作(二):讀取與另存新檔

     編輯:關於C語言

承接前文,本文專注於從 SQL Server 讀取二進位資料並還原為檔案,以及解決「另存為不同檔案格式」的實務問題。

從資料庫讀取檔案核心代碼

SqlDataReader dr = null;
SqlConnection objCn = new SqlConnection();
objCn.ConnectionString = "Data Source=(local);User ID=sa;Password=;Initial Catalog=Test";

SqlCommand cm = new SqlCommand();
cm.Connection = objCn;  // 注意:原代碼有誤寫為 cn
cm.CommandType = CommandType.Text;
cm.CommandText = "SELECT " + fieldName + " FROM " + tableName + " WHERE ID=1";

dr = cm.ExecuteReader();
byte[] fileData = null;

if (dr.Read())
{
    fileData = (byte[])dr[0];
}
dr.Close();

// 寫入檔案 - 方式一:FileStream 直接寫入
FileStream fs = new FileStream(fileName, FileMode.Create);
fs.Write(fileData, 0, fileData.Length);
fs.Close();

解決「另存為指定格式」問題

原代碼使用 FileInfo.OpenWrite() 會保留原檔案屬性,導致無法正確另存為不同副檔名(如 .doc)。改用 BinaryWriter 可精確控制輸出:

FileStream fs = new FileStream(fileName, FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(fileData, 0, fileData.Length);
bw.Close();
fs.Close();

關鍵提醒

  • 必須引用 System.Data.SqlClient 與 System.IO 命名空間
  • 實務上建議使用 using 區塊確保資源釋放
  • 大檔案建議分塊讀寫避免記憶體壓力
  • 參數化查詢防止 SQL 注入(原代碼字串拼接有風險)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved