SqlCommand参数大小混乱

本文关键字:混乱 参数 SqlCommand | 更新日期: 2023-09-27 18:25:58

我有以下代码行:

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

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

SqlCommand参数大小混乱

对于具有修复大小的类型,您应该省略此参数,简单地说:

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

size参数仅与类型可以具有可变大小的参数相关,如varcharnvarchar等。

内部的大小为4个字节

有关详细信息,请参阅msdn上的DbParameter类。这是相关的,因为SqlCeParameter实现了DbParameter

以下部分相关:

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

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

对于可变长度的数据类型,Size描述了要传输到服务器的数据。例如,对于Unicode字符串值,Size可用于限制发送到服务器的前一百个字符。

看看这个https://gist.github.com/1932766用于实现Size属性。

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

如果你要使用int,那么无论它的大小,我都认为是这样。

所以你的代码将是

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

对于varchar,navarchar,其中的大小是maater,您需要在.net代码中指定大小,即在参数中