数据类型为nchar的前导零(2)MSSQL Server 2008

时间:2012-02-14 09:04:45

标签: c# sql-server-2008 dataset sqldatatypes

我在表用户中有一个名为 mix 的字段,其数据类型为 nchar(2)。 VS2010中的DataSet是从该表创建的。 DataSet中的字段组合的类型为 System.String ,其中maxlength设置为 2 。我有一个绑定到此DataSet的文本字段。现在,如果我将值更改为“00”并单击“保存”,则可以看到当程序将DataSet更新回DataBase时:

usersTableAdapter.Update(usersDataSet.Users);

当前所选用户的值为“ 00 ”:

currentUser.mix = "00";

但是在DataBase中,值已经保存为:“ 0 ”。我不明白为什么删除了第一个零,并在最后附加了空格。例如,如果我在文本字段中输入“10”并保存,它将在数据库中保存为“10”。但是,如果我将文本字段设置为“01”,则将删除前导零 - > “1”。

1 个答案:

答案 0 :(得分:1)

某处,某处,正在将此值转换为数字类型(可能,最终的插入/更新将其转换回字符串)。您需要找出转换发生的位置。

根据您的评论:

  

我逐行调试了最终Update代码,mix的值总是以字符串(“00”)

要检查的最后一个地方是查看为SqlDataAdapterusersTableAdapter)配置的命令。检查InsertCommandUpdateCommand,确保命令合理,任何参数的类型都正确。

我担心我没有使用基于设计器的数据访问,但我相信在设计器中首次创建表适配器时会选择命令 - 如果要更改数据集的形状(例如,更改列类型),我建议删除并重新创建适配器/数据集(但是,嘿,这对于基于设计器的工具来说很容易,不是吗?)