【发布时间】:2023-12-17 17:16:01
【问题描述】:
我有这个专栏 ContactNo 和其他类似的专栏,例如 FaxNo 等。
问题在于 MSSQL 中这些列被定义为 bigint,我在 MSSQL 中使用 Management Studio 将它们更改为 varchar:
我想将它从 int 更改为 varchar/string 的唯一原因是我可以在开始时使用“0”。和 int 一样,我不能在开头加上“0”。
我认为我还需要对数据集进行更改,因此我还更新了 WPF 中的数据集。在数据集中将同一表的同一列从 System.Int64 更改为 System.String
但即使我仍然收到此错误:
Specified Cast is not valid
如果我将类型改回它们之前的任何类型,它工作正常,但那些大 int 类型不允许零。
当我进行调试时,看到这个黄色突出显示。之后直接跳转到异常错误:
更新 1
【问题讨论】:
-
尝试删除DataSet1.xsd中修改的表并重新添加。
-
您确定要更改数据库只是为了能够显示带有前导 0 的数字吗?当您显示值时,听起来在 GUI 中做得更好?请记住,如果将这些数字转换为字符串,那么根据这些数字进行排序/过滤之类的操作会很痛苦。
-
完全应该用字符串格式而不是格式化数据库
-
好的,如果您需要能够区分 001234 和 0001234,那么您是对的,您需要将类型更改为字符串,因为它不再是真正的数字了。
-
@SizzlingCode:请忽略任何告诉您保留传真号码为
BIGINT的人。电话号码不是“数字”,因为您从不对它们进行数学运算或对其进行排序。它们是字符串,这个字段本来就不应该是BIGINT。所以你改变它是正确的。电话号码的数字类型不仅不能存储前导零,而且也不能存储分机号或国际号码,例如 +1 12 1231 1231。此外,您最后一张带有GetTable<AgentAccount>的图片是无用的,因为它不是一个定义。AgentAccount类的定义是什么?
标签: sql-server ado.net dataset