2
 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();
4

3 回答 3

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

和/或

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

太大,不适合您要插入的列。

于 2011-05-03T16:04:32.897 回答
2

好吧,大概您正在尝试向表中插入一个值,并且它超过了列的长度。您应该在尝试执行 SQL 插入之前验证数据。

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

(最后,不清楚你为什么要调用调用ToString()的结果Substring......)

于 2011-05-03T16:03:06.450 回答
0

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

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

于 2011-05-03T16:03:03.893 回答