Строковые или двоичные данные будут усеченными исключениями? - PullRequest
2 голосов
/ 03 мая 2011
 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 ]

4 голосов
/ 03 мая 2011
str.Substring(0, str.Length - 4)

и / или

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

слишком велики, чтобы поместиться в столбец, в который вы пытаетесь вставить.

2 голосов
/ 03 мая 2011

Ну, по-видимому, вы пытаетесь вставить значение в таблицу, и оно превышает длину столбца. Вы должны проверить данные, прежде чем пытаться выполнить вставку SQL.

Однако вы должны также использовать параметризованный запрос - в настоящее время ваш код уязвим для атаки SQL-инъекцией. Посетите сайт Bobby Tables для получения дополнительной информации. По сути, параметризованный SQL позволяет хранить код (SQL) отдельно от данных (параметров), делая ваш код более понятным и предотвращая атаки с использованием SQL-инъекций (при условии, что вы не также используете динамический SQL).

(Наконец, неясно, почему вы звоните ToString() в результате вызова Substring ...)

0 голосов
/ 03 мая 2011

Ваши данные (или, возможно, триггер) слишком велики, чтобы поместиться в столбец, который вы пытаетесь сохранить.

По крайней мере, это мое лучшее предположение.

...