Страница: 1 |
Страница: 1 |
Вопрос: Как решить глюк с запросом к БД
Добавлено: 26.03.07 11:24
Автор вопроса: Vlad | ICQ: 452-568-953
БД написана в SQL MS 2000.
Команда SELECT выполняется с успехом.
С командой INSERT INTO возникла проблема и не знаю по какой причине(
Код следующий:
SqlConnection1.Open()
SqlDataAdapter1.InsertCommand.CommandText = "INSERT INTO client(Firstname, Adres,Phone, Fax, Person, Email, Info) VALUES('" & txtName.Text & "', '" & txtAdres.Text & "', '" & txtPhone.Text & "', '" & txtFax.Text & "', '" & txtPerson.Text & "', '" & LinkLabel1.Text & "', '" & txtInfo.Text & "')"
SqlDataAdapter1.InsertCommand.ExecuteNonQuery()
Выдается ошибка:
System.Data.SqlClient.SqlException: Prepared statement '(@Firstname varchar(50),@Adres varchar(100),@Phone varchar(50),@' expects parameter @Firstname, which was not supplied.
Чего не хватает - не могу понять.
Помогите, плс, кто знает.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 26.03.07 12:09
Автор ничего не слышал о SQL injection, его удивление при виде уничтоженной базы будет приятным.
Чего не хватает - не могу понять.
Попробуй, к примеру, прочитать сообщение об ошибке, а не указывать на него со словами "не работает!".
Номер ответа: 2
Автор ответа:
Vlad
ICQ: 452-568-953
Вопросов: 1
Ответов: 4
Профиль | | #2
Добавлено: 26.03.07 12:11
Я и читаю. Код написан верно, параметр @Firstname задает в запрос '" & txtName.Text & "'
В чем загвоздка?
Номер ответа: 3
Автор ответа:
Vlad
ICQ: 452-568-953
Вопросов: 1
Ответов: 4
Профиль | | #3
Добавлено: 27.03.07 11:46
Неужели на форуме нет знающих людей? Очень нужна помощь.
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 27.03.07 13:01
наверное в txtName пусто...
Номер ответа: 5
Автор ответа:
Vlad
ICQ: 452-568-953
Вопросов: 1
Ответов: 4
Профиль | | #5
Добавлено: 27.03.07 13:31
txtName заполняется, я проверял. Любыми вариациями.
Номер ответа: 6
Автор ответа:
VerhoLom
Вопросов: 20
Ответов: 285
Профиль | | #6
Добавлено: 31.03.07 14:58
А Вы случаем не в табличную функцию с параметрами пытаетесь строки вставить? Сильно похоже... "client" - это таблица?
Попробуйте еще вместо адаптера пользоваться просто объектом Command, установив его свойства:
.CommandType = CommandType.Text
.CommandText = "SQL-запрос"
.ExecuteNonQuery 'Выполнить запрос
Я-бы еще перепроверил наличие одинарных кавычек (апострофов), т. к. при попытке вставить текст с ними возникает ошибка, либо в запросе где не хватает кавычки. Выведите перед выполнением в MessageBox получившийся у Вас запрос и рассмотрите его... Может чего и пропустили.
Номер ответа: 7
Автор ответа:
BUMM ®
Вопросов: 8
Ответов: 482
Профиль | | #7
Добавлено: 03.04.07 00:45
SqlDataAdapter1.InsertCommand.CommandText = "INSERT INTO client(Firstname, Adres,Phone, Fax, Person, Email, Info) VALUES(?,?,?,?,?,?,?)"
dim par1 as SqlParameter
par1.value = Cobj(txtName.text)
InsertCommand.parametres.add(par1)
....
....
и так для каждого текстбокса
Студии под рукой нету может ошибки есть синтаксические, но думаю идея ясна, пользуй параметры - меньше ошибок будет