【问题标题】:SqlCommand Parameters size confusionSqlCommand 参数大小混淆
【发布时间】:2012-02-28 14:02:45
【问题描述】:

我有以下代码行:

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

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

【问题讨论】:

    标签: c# sqlparameter


    【解决方案1】:

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

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

    size 参数仅与具有可变大小的类型的参数相关,例如varchar、nvarchar 等。

    【讨论】:

    • 那么...应该传递 LinkID 的大小还是列的最大大小?
    【解决方案2】:

    一个 int 的大小是 4 个字节。

    请参阅DbParameter class on msdn 了解更多信息。这是相关的,因为SqlCeParameter 实现了DbParameter

    以下部分是相关的:

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

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

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

    有关 Size 属性的实现,请参见 https://gist.github.com/1932766。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果您要使用 int,那么我认为无论它的大小如何。

        所以你的代码将是

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

        对于 varchar、navarchar 来说,如果大小很重要,您需要在 .net 代码中指定大小,即在参数中

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-08
          • 1970-01-01
          • 2016-11-30
          • 1970-01-01
          • 2017-07-22
          • 2013-05-23
          • 1970-01-01
          • 2017-04-15
          相关资源
          最近更新 更多