所以我的代码中有这样的东西
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
时,我得到一个例外
指定的演员表无效。
我几乎可以肯定问题源于SECOND_CODE
字符的演员要求char(2)
。另一方面,FIRST_CODE
工作正常。我正确添加SECOND_CODE
参数吗?我有什么遗失的吗?
答案 0 :(得分:4)
问题很可能是将char
插入FIRST_CODE
,即CHAR(1)
。这是string
类型,限制为单个字符,而不是单字符类型。如果您尝试插入长度超过一个字符的string
,RDBMS将报告数据截断错误,但它希望您提供string
,而不是char
。
这应该有效:
command.Parameters.AddWithValue("@FIRST_CODE", "A");
有关详细信息,请参阅table that maps SQL Server's type to types of .NET。