C# SqlCommand参数大小混乱

C# SqlCommand参数大小混乱,c#,sqlparameter,C#,Sqlparameter,我有以下代码行: sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int, 4).Value = linkID; 但是,我对size的用法有点困惑。这是说它的大小是4字节吗?或者长度为4,因此可以接受1234,但12345太大?int的大小为4字节 有关更多信息,请参阅n。它之所以相关是因为SqlCeParameter实现了DbParameter 以下章节是相关的: Size属性用于二进制和字符串类型 对于非字符串数据类型和ANSI字符串数据,Si

我有以下代码行:

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int, 4).Value = linkID;

但是,我对
size
的用法有点困惑。这是说它的大小是4字节吗?或者长度为4,因此可以接受
1234
,但
12345
太大?

int的大小为4字节

有关更多信息,请参阅n。它之所以相关是因为
SqlCeParameter
实现了
DbParameter

以下章节是相关的:

Size属性用于二进制和字符串类型

对于非字符串数据类型和ANSI字符串数据,Size属性 指字节数。对于Unicode字符串数据,大小是指 字符数。字符串的计数不包括 终止字符

对于可变长度数据类型,“大小”描述了 要传输到服务器的数据。例如,对于Unicode字符串 值,大小可用于限制发送到服务器的数据量 服务器设置为前100个字符


有关Size属性的实现,请参见此部分。

对于具有固定大小的类型,您应该省略此参数,只需:

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int).Value = linkID;

size参数仅适用于具有可变大小类型的参数,如
varchar
nvarchar
等。

它是4字节,32位。它是一个32位整数。

如果你想要int,我认为无论它的大小都是

因此,您的代码将是

sqlcommand.Parameters.Add("@LinkID", SqlDbType.Int).Value = linkID; 

对于varchar、NAVARCAR,如果大小为maater,则需要在.net代码中指定大小,即在参数中,因此。。。您应该传递LinkID的大小还是传递列的最大大小?