C# SQL Server VARBINARY(最大值)
我有一个存储过程,它在表中插入一个C# SQL Server VARBINARY(最大值),c#,sql,sql-server,tsql,strongly-typed-dataset,C#,Sql,Sql Server,Tsql,Strongly Typed Dataset,我有一个存储过程,它在表中插入一个varchar&VARBINARY(MAX)值。 我将一个c#字节[]传递给varbinary(max)字段。我还看到字节[]大小的大小是80142,它满足变量binary的最大限制。存储过程执行时没有任何错误。但是当我试图查询该表时,我在varbinary数据类型中看到空值 SQL sp ALTER PROCEDURE [dbo].[Test] -- Add the parameters for the stored procedu
varchar
&VARBINARY(MAX)
值。
我将一个c#字节[]
传递给varbinary(max)
字段。我还看到字节[]
大小的大小是80142,它满足变量binary
的最大限制。存储过程执行时没有任何错误。但是当我试图查询该表时,我在varbinary
数据类型中看到空值
SQL sp
ALTER PROCEDURE [dbo].[Test]
-- Add the parameters for the stored procedure here
@PNumber varchar(50)
,@Byte varbinary(max)
AS
BEGIN
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO [Test].[dbo].[Data]
([PNumber]
,[PByte])
VALUES
(@PNumber
,@Byte)
END
C#代码
表结构:
CREATE TABLE [dbo].[Data]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[PNumber] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PByte] [varbinary](max) NULL
) ON [PRIMARY]
如何确定数据为空?我很确定SQL Server Management Studio不会显示太长的值(我不知道限制),即使该值存在。如何确定数据为空?我很确定SQL Server Management Studio不会显示太长的值(我不知道限制),即使该值存在。您用于执行插入的代码是什么?(存储过程定义和
C#
调用)以及“空”值null
或0x
是什么意思?请参阅我添加的代码。我只是在pbytes列中看到一个空行,请为数据表添加创建脚本。您的第一句话说您正在插入int和varbinary,但本文的其余部分似乎是在处理varchar和varbinary。最好运行SQL Server profiler,看看SQL Server实际得到的SQL调用是什么。我有一个模糊的“回忆”(可能完全错了,如果是这样的话,请为造成的任何混淆道歉!),您可能需要传递字节数组的长度。是否存在接受长度参数的重载?用于执行插入的代码是什么?(存储过程定义和C#
调用)以及“空”值null
或0x
是什么意思?请参阅我添加的代码。我只是在pbytes列中看到一个空行,请为数据表添加创建脚本。您的第一句话说您正在插入int和varbinary,但本文的其余部分似乎是在处理varchar和varbinary。最好运行SQL Server profiler,看看SQL Server实际得到的SQL调用是什么。我有一个模糊的“回忆”(可能完全错了,如果是这样的话,请为造成的任何混淆道歉!),您可能需要传递字节数组的长度。是否存在接受长度参数的重载?SSMS会截断返回的数据,尽管它不会显示任何数据。我现在无法访问SSMS,因此无法检查。但是,我知道,对于XML数据,如果太长,它将显示为空白。SSMS会截断返回的数据,尽管它不会显示任何数据。我现在没有访问SSMS的权限,因此无法检查。但是,我知道,对于XML数据,如果太长,它将显示为空白。
CREATE TABLE [dbo].[Data]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[PNumber] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[PByte] [varbinary](max) NULL
) ON [PRIMARY]