字符串或二进制数据会被截断异常吗?

时间:2011-05-03 15:59:55

标签: .net sqlexception

 cmd = new SqlCommand("INSERT INTO sms_sentmessages(Mobilefrom,Mobileto,Message,senddate) VALUES('" + str.Substring(0, str.Length - 4).ToString() + "','" + number + "','" + txtmessage.Text.Replace("'", "''").Trim() + "',getdate())", con);
                                    cmd.CommandType = CommandType.Text;
                                    cmd.ExecuteNonQuery();

3 个答案:

答案 0 :(得分:4)

str.Substring(0, str.Length - 4)

和/或

txtmessage.Text.Replace("'", "''").Trim()

太大而无法插入您要插入的列。

答案 1 :(得分:2)

嗯,大概是你试图在表中插入一个值,它超过了列的长度。您应该在尝试执行SQL插入之前验证数据。

但是,您应该 使用参数化查询 - 目前您的代码容易受到SQL注入攻击。有关详细信息,请参阅Bobby Tables site。基本上,参数化SQL允许您将代码(SQL)与数据(参数)分开,使您的代码更清晰并防止SQL注入攻击(假设您不是使用动态SQL。)

(最后,不清楚为什么要对ToString()来电的结果致电Substring ...

答案 2 :(得分:0)

您的数据(或可能是触发器)太大,无法放入您尝试存储的列中。

至少,这是我最好的猜测。