我在表用户中有一个名为 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”。
答案 0 :(得分:1)
某处,某处,正在将此值转换为数字类型(可能,最终的插入/更新将其转换回字符串)。您需要找出转换发生的位置。
根据您的评论:
我逐行调试了最终
Update
代码,mix的值总是以字符串(“00”)
要检查的最后一个地方是查看为SqlDataAdapter
(usersTableAdapter
)配置的命令。检查InsertCommand
和UpdateCommand
,确保命令合理,任何参数的类型都正确。
我担心我没有使用基于设计器的数据访问,但我相信在设计器中首次创建表适配器时会选择命令 - 如果要更改数据集的形状(例如,更改列类型),我建议删除并重新创建适配器/数据集(但是,嘿,这对于基于设计器的工具来说很容易,不是吗?)