0

我正在尝试将字符串插入到char(20)我的 SQL Server 数据库中的列中。

我将字符串设置为等于一个值,然后将其添加到参数中

thisstring = "1914"
cmd.Parameters.AddWithValue("@code", thisstring)

然而,每次我尝试它最终在数据库中看起来像这样

图片

我需要它看起来像1913, 000000, 000001那些。

当我尝试用空格填充字符串时

thisstring= thisstring.PadLeft(20, " ")

或者

thisstring = "     " & thisstring

我正进入(状态

字符串或二进制数据将被截断

即使该字段总共不是 20 个字符

我究竟做错了什么?

编辑***这里是 SQL Server 中的列

http://imgur.com/BbV6VQv

4

1 回答 1

1

我不确定,但我认为问题在于 AddWithValue。
虽然方便,但此方法不允许指定要传递给数据库引擎的确切数据类型,也不允许指定参数的大小。它总是为 C# UNICODE 字符串传递一个 nvarchar 参数。

我认为您应该尝试使用用于构建参数的标准语法

Dim p = new SqlParameter("@code", SqlDbType.Char, 20)
p.Value = thisstring.PadLeft(20, " ")

请参阅 MSDN 上的这篇非常有趣的文章

于 2013-06-21T19:24:32.003 回答