• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

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

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Vb.net Затык с исполнением Insert Into

  • Автор темы _Mike
  • Дата начала
Статус
Закрыто для дальнейших ответов.
M

_Mike

Ввожу в обычную виндовую форму данные, собираю их в выражение INSERT INTO и пытаюсь добавить с его помощью запись в таблицу БД. В отладке получаю (скопировано):
strInsert = "INSERT INTO person (familija,imja,otchestvo,fio,layer,chef) VALUES ("Грап","Илья","Ильич","Грап И.И.","2","4")"
Далее код:
Dim cmdDocument As New OdbcCommand(strInsert, ODBCcn)
На следующей строке кода:
cmdDocument.ExecuteNonQuery() - получаю ошибку: ERROR [HYT00] [MySQL][ODBC 3.51 Driver][mysqld-5.0.22-community-nt]Data too long for column 'familija' at row 1
Это неправда, потому что:
1. в таблице уже есть много записей, с куда более длинными фамилиями
2. этот же самый запрос, введенный и исполненный в эксплорере MySQL отрабатывает без вопросов.
К сведению: замена кавычек на апострофы никак не влияет на результат (абсолютно то же), исполнение или неисполнение инструкции:
Dim cmdCodePage As New OdbcCommand("set character_set_results='cp1251'", ODBCcn)
cmdCodePage.ExecuteScalar()
так же на результат не влияет. Че делать? (Особо сложные советы могу не понять - я еще совсем "зеленый" (не путать с "голубым") и то что изложил - практически предел моих возможностей на данный момент) :)
 
M

_Mike

Только что заметил на MSDN.ru:
"OdbcCommand - класс
Примечание. Это пространство имен, класс или член поддерживаются .NET Framework только версии 1.1. " - может в этом дело? - у меня 2-ой... Но SELECTы прекрасно работают.... И там не написано, чем заменить
 
M

_Mike

В общем выяснил в чем дело. Если ввожу данные латиницей, то все работает, - т.е., запись в БД добавляется. Ну и что же тогда делать? Для каждого текстового поля таблицы в БД задана ср1251, иначе вообще ничего прочесть невозможно. Selectы отрабатывают нормально, если в коде имеется это:
Dim cmdCodePage As New OdbcCommand("set character_set_results='cp1251'", ODBCcn)
cmdCodePage.ExecuteScalar() (иначе возвращаются вопросики)
А INSERT с кирилицей не работает никак ...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!