C#操作 SQL Server 存图存文件这事儿,说复杂也不复杂,说简单也不是一句话能讲完的。用 BLOB 存二进制数据其实挺常见的,是你想把图片、PDF、Word 啥的直接塞进数据库,不想搞太多路径管理,那这个方式就蛮合适的。
文件直接存进数据库的实现方式还挺简单,核心就几个步骤:读取文件流 → 转成字节数组 → 参数化写入数据库字段。用FileStream
配合SqlParameter
,代码也不绕,适合平时做个封装复用。
从数据库拿文件出来也不难。SqlDataReader
读 BLOB 字段,再通过GetBytes
方法写成文件就行。你还可以加点判断,文件存在就删掉、写完后确认提示这些,用户体验上更完整。
有几点提醒一下:参数化查询一定要用,防 SQL 注入不是说说而已;还有性能问题,BLOB 操作对大文件压力蛮大,频繁读写最好搭配缓存或者异步队列。
如果你常常要在后台存图片、或做个后台图片管理系统、甚至小型文档平台,这套方法你可以直接拿来用。代码干净利落,响应也快,兼容 WinForm、ASP.NET 项目没问题。