流程
- 選擇圖片:`OpenFileDialog` 獲取路徑。
- 讀取二進制:
byte[] imageData = File.ReadAllBytes(filePath);
// 或大文件分塊讀取避免 OOM
- 存入數據庫:表字段類型 `VARBINARY(MAX)` (SQL Server) / `BLOB` (MySQL) / `BYTEA` (PostgreSQL)。
using (var cmd = new SqlCommand("INSERT INTO Images (Data) VALUES (@data)", conn)) {
cmd.Parameters.Add("@data", SqlDbType.VarBinary, -1).Value = imageData;
cmd.ExecuteNonQuery();
}
- 讀取顯示:
byte[] data = (byte[])cmd.ExecuteScalar();
using (var ms = new MemoryStream(data)) {
pictureBox1.Image = Image.FromStream(ms);
}
參考
C# 圖片存數據庫完整示例
注意
- 大量/大圖片建議**存文件系統/對象存儲**,數據庫只存路徑,避免備份緩慢、性能下降。
- 使用參數化查詢防注入。