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インジェクション攻撃に対して脆弱です。詳細については、BobbyTablesサイトを参照してください。基本的に、パラメーター化されたSQLを使用すると、コード(SQL)をデータ(パラメーター)から分離して、コードをより明確にし、SQLインジェクション攻撃を防ぐことができます(動的SQLも使用していない場合)。

(最後に、なぜあなたが電話ToString()の結果を呼んでいるのかは明らかではありませんSubstring...)

于 2011-05-03T16:03:06.450 に答える
0

データ(またはトリガー)が大きすぎて、保存しようとしている列に収まりません。

少なくとも、それが私の一番の推測です。

于 2011-05-03T16:03:03.893 に答える