C# SQL Server字符串在插入时填充空格-为什么?
当我试图向SQL Server中插入一些数据时,出现了这些额外的字符 例如我的C# SQL Server字符串在插入时填充空格-为什么?,c#,sql-server,sqldatatypes,C#,Sql Server,Sqldatatypes,当我试图向SQL Server中插入一些数据时,出现了这些额外的字符 例如我的textBox1.text==“示例” 这就是密码 string qry = "insert into FinalImages (FinalImageName, Date) values(@FinalImageName, @Date)"; SqlConnection c = new SqlConnection(c_string); //Initialize SqlCommand object for insert S
textBox1.text==“示例”
这就是密码
string qry = "insert into FinalImages (FinalImageName, Date) values(@FinalImageName, @Date)";
SqlConnection c = new SqlConnection(c_string);
//Initialize SqlCommand object for insert
SqlCommand SqlCom = new SqlCommand(qry, c);
SqlCom.Parameters.Add(new SqlParameter("@FinalImageName", SqlDbType.Char, 40)).Value = textBox1.Text;
SqlCom.Parameters.Add(new SqlParameter("@Date", SqlDbType.Char, 40)).Value = DateTime.Now.ToString("MM/dd/yyyy");
但是当我在表格中检查时,记录是这条“SAMPLE”
,它添加了34个空格字符应该怎么办?不要使用SqlDbType.Char,使用NVarChar。Char是一个固定大小的字符串,用空格填充(一个可怕的怪物)。您指定的参数长度为40个字符,而不是可变长度:
SqlCom.Parameters.Add(new SqlParameter("@FinalImageName", SqlDbType.Char, ***40***)).Value = textBox1.Text;
因此,它有助于填充您提供的值
只需使用不接受length参数的重载,并使用VarChar:
SqlCom.Parameters.Add(new SqlParameter("@FinalImageName", SqlDbType.VarChar)).Value = textBox1.Text;
您选择了CHAR(40)
作为参数类型。您的意思是VARCHAR(40)
您正在使用char(40)
。这样,您将始终拥有长度为40的字符串。如果较短,SQL Server将自动用空格填充其余部分。字符通常仅用于固定长度的数据,例如CustomerNumber 在本例中,您希望使用
varchar(40)
来获取可变长度 运行
设置ANSI_填充
去
进一步的综合信息如下所示
如果执行此操作,则需要更新所有现有记录,以使用ltrim()/rtrim()删除填充,因为关闭填充不会影响现有记录
您赢得了本周最差头衔奖。