怎样向SQLServer插入带有Image字段的记录

 向SQL Server插入记录相信大家都会做,但是如果表中带有Image字段就不好弄了,这里有一个例子,非常安全,同时也向大家展示动态生成控件的技巧(对高手来说班门弄斧了)
procedure Button1Click(Sender:TObject);
var
Query : TQuery;
StringStream : TStringStream;
begin
StringStream := TStringStream.Create ('''');
Memo.Lines.SaveToStream (StringStream); //在这里创建一个字符流
StringStream.Position := 0;
Query := TQuery.Create(self); //在这里创建一个临时的Query
Query.DatabaseName := Database.DatabaseName;
with Query.SQL do
begin
Clear;
Append (''INSERT INTO TEST'');
Append (''(ID,CONTENT)''); //CONTENT是一个Image字段
Append (''VALUES (:ID, :CONTENT)'');
end;
with Query do
begin
ParamByName (''ID'').asInteger := StrToIntDef (edtID.Text,0);
ParamByName (''CONTENT'').asBlob := StringStream.DataString; //就在这里赋值
end;
StringStream.Free; //用完了马上Free掉
Database.StartTransaction; //开始事务控制
try
Query.ExecSQL; //开始插入记录
Database.Commit; //提交事务
except
Query.Free; //如果出错首先将Query Free掉
Database.RollBack; //回退事务
raise; //重新引发异常,以通知用户
end;
Query.free;
end;

转自:http://www.newasp.net/tech/program/19634.html 

### C# 中将图片存入 SQL Server 数据库的方法 在现代应用程序开发中,将图片存储至数据库是一种常见的需求。以下是关于如何通过 C# 将图片保存到 SQL Server 的具体方法。 #### 1. 图片存储的数据类型 SQL Server 提供了一种适合存储二进制大对象(BLOB)的字段类型——`VARBINARY(MAX)`[^1]。这种数据类型可以容纳大量的二进制数据,非常适合用于存储图像文件。 #### 2. 创建支持图片存储的数据库表结构 首先,在 SQL Server 中创建一张能够存储图片的表格: ```sql CREATE TABLE Images ( Id INT PRIMARY KEY IDENTITY, FileName NVARCHAR(255), FileData VARBINARY(MAX) ); ``` 上述代码片段展示了如何定义一个名为 `Images` 的表,其中包含两个主要列:`FileName` 和 `FileData`。前者用来记录文件名,后者则负责实际存储图片的二进制数据。 #### 3. 使用 C# 实现图片上传功能 下面是一个完整的 C# 示例程序,展示如何将本地磁盘上的图片加载并插入SQL Server 表格中: ```csharp using System; using System.Data.SqlClient; using System.IO; class Program { static void Main() { string connectionString = "your_connection_string_here"; using(SqlConnection conn = new SqlConnection(connectionString)) { byte[] imageData = null; // Read the file and convert it to Byte Array. FileStream fstream = new FileStream(@"path_to_your_image", FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fstream); try{ imageData = br.ReadBytes((int)fstream.Length); string query = @"INSERT INTO Images (FileName, FileData) VALUES (@fileName, @fileData)"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@fileName", Path.GetFileName(@"path_to_your_image")); cmd.Parameters.Add(new SqlParameter("@fileData", SqlDbType.VarBinary, imageData.Length)); cmd.Parameters["@fileData"].Value = imageData; conn.Open(); int rowsAffected = cmd.ExecuteNonQuery(); Console.WriteLine($"{rowsAffected} row(s) inserted."); } catch(Exception ex){ Console.WriteLine(ex.Message); } finally{ br.Close(); fstream.Close(); } } } } ``` 此段代码实现了以下几个关键步骤: - 打开指定路径下的图片文件,并将其转换成字节数组形式; - 构建一条带有参数化的 SQL 插入命令; - 建立与目标数据库之间的连接,执行该命令完成数据提交过程[^2][^3]。 #### 4. 安全性和性能考虑 当处理大量或者频繁变动的大尺寸媒体资源时,除了直接嵌套于关系型数据库内部外,还可以采用其他策略来提高效率和可维护性。例如利用 Azure Blob Storage 或 Amazon S3 这样的云服务解决方案作为外部存储层,仅保留指向这些位置的链接地址而非原始内容本身[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值