C# CREATEINSERT语句以插入varbinary blob

C# CREATEINSERT语句以插入varbinary blob,c#,sql-server,blob,sql-insert,varbinary,C#,Sql Server,Blob,Sql Insert,Varbinary,我想从我的数据库中导出一些数据,并创建一个Insert语句,用C#将这些数据插入到另一个数据库中 我制作的脚本几乎可以处理所有内容(and-type),但是当我尝试在我的一个表中使用它时,它有一个名为Contentos的字段,它的类型是VARBINARY(max),我无法让它工作 现在我必须选择该数据,我使用一种方法将System.Binary[](我在读取列时得到的)转换为十六进制字符串来实现 但不幸的是,我在插入数据时失败了 我正在尝试这样的事情: INSERT INTO [My.Cool.

我想从我的数据库中导出一些数据,并创建一个Insert语句,用C#将这些数据插入到另一个数据库中

我制作的脚本几乎可以处理所有内容(and-type),但是当我尝试在我的一个表中使用它时,它有一个名为
Contentos
的字段,它的类型是
VARBINARY(max)
,我无法让它工作

现在我必须选择该数据,我使用一种方法将
System.Binary[]
(我在读取列时得到的)转换为十六进制字符串来实现

但不幸的是,我在插入数据时失败了

我正在尝试这样的事情:

INSERT INTO [My.Cool.DBA].[dbo].[Documentos] ([Id], [SomeID], [Name], [Contentos], [LastChange], [LastChangeId]) VALUES ('693c9644-f2b5-4c74-a633-f4942fc1d8e5', 'bca2ac27-71e0-4641-a4b0-3c3e39916e71', 'Whats that', [--> here goes the content <--], '07.08.15 11:18:34:383', '693c9344-f8b5-4d74-a633-f4942fc1d8e5');

插入[My.Cool.DBA].[dbo].[Documentos]([Id],[SomeID],[Name],[Contentos],[LastChange],[LastChangeId])值('693c9644-f2b5-4c74-a633-f4942fc1d8e5','bca2ac27-71e0-4641-a4b0-3c3e39916e71',[-->这是什么',[-->您应该使用参数化查询:

INSERT INTO [My.Cool.DBA].[dbo].[Documentos] ([Id], [SomeID], [Name], [Contentos], [LastChange], [LastChangeId])
VALUES (@Id, @SomeId, @Name, @Contentos, @LastChange, @LastChangeId);
使用
command.parameters
上的
Add
AddWithValue
方法将参数添加到
SqlCommand

使用参数化查询有多个优点:

  • 安全性:这可以防止SQL注入攻击
  • 性能:由于查询的文本始终相同,SQL Server可以缓存执行计划
  • 可靠性:您不需要担心值(数字、日期…)的格式,这是自动处理的。例如,不存在由于不同文化而导致格式错误的风险


SQL Server中BLOB文本的格式为
0x
(无引号)因此,在您的情况下,它将是
0x504B030414000000008091043E288E9E0D9EC7C1CEB6CF6A7E9290D5A4B0479E2A1B8FE350341542EA67DCCD96DC5E682FD14E7A61E70000002A000000000

谢谢,这是cource的权利,但我很抱歉地告诉您,这种方法不符合我的要求..我的任务是创建多个insert语句并将它们保存到中ode>.txt文件
,然后我可以将其复制并通过MSSQL编辑器运行。@probird,在这种情况下,您的问题与C#无关,您应该删除标记。我认为这与它有关,因为我正在用C#编写程序,必须强制转换结果并将其打包到语句中,但好的,我会删除它。谢谢,h帮助我(0x):)