所以我的代码中有这样的东西
string sqlQuery = "INSERT PERSON (FIRST_NAME, SURNAME, FIRST_CODE, SECOND_CODE) VALUES (@FIRST_NAME, @SURNAME, @FIRST_CODE, @SECOND_CODE)";
SqlCommand command = new SqlCommand(sqlQuery);
command.Parameters.AddWithValue("@FIRST_NAME", "Testo");
command.Parameters.AddWithValue("@SURNAME", "Tester");
command.Parameters.AddWithValue("@FIRST_CODE", 'A');
command.Parameters.AddWithValue("@SECOND_CODE", "CA");
在数据库中,表 PERSON 看起来像这样
[FIRST_NAME] [varchar](20) NULL,
[SURNAME] [varchar](20) NULL,
[FIRST_CODE] [char](1) NULL,
[SECOND_CODE] [char](2) NULL,
问题是,当我执行 SqlCommand
时,出现异常提示
Specified cast is not valid.
我几乎可以肯定问题出在 SECOND_CODE
字符的强制转换要求 char(2)
上。另一方面,FIRST_CODE
工作正常。那么我是否正确添加了 SECOND_CODE
参数?有什么我想念的吗?
最佳答案
问题很可能是将 char
插入到 FIRST_CODE
中,即 CHAR(1)
。这是一个限制为单个字符的string
类型,不是单字符类型。如果您尝试插入一个长度超过一个字符的 string
,但 RDBMS 将报告数据截断错误,但它希望您提供一个 string
,而不是 char
。
这应该有效:
command.Parameters.AddWithValue("@FIRST_CODE", "A");
关于c# - 尝试插入两个字母的字符时,指定的转换无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35851818/