尝试插入两个字母的字符

时间:2016-03-07 19:02:06

标签: c# sql .net sql-server

所以我的代码中有这样的东西

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参数吗?我有什么遗失的吗?

1 个答案:

答案 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