Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB .NET > Ошибка в предложение SQL


Автор: Rbv 7.6.2007, 23:57
        
Код
query = "insert into catalog(name,description,runtime,genre,type,price,supplier_id) values('" & Me.txtname.Text & "','" & Me.txtdescription.Text & "','" & Me.txtminutes.Text & "','" & Me.cbogenre.SelectedItem & "','movie','" & Me.txtprice.Text & "',1)"


Выдает ошибку что есть ошибка в предложение INSERT INTO
Маюсь уже не знаю аж что делать.

Имена полей и переменых правильные, это однозначно.

Автор: HellMasterHaiL 8.6.2007, 14:46
а точно все полня таблици catalog - строковго типа??? (char,varchar и тд) ???

можешь показать чисто сформированную строку SQL? со всеми значениями!

Автор: Exception 8.6.2007, 19:38
А как насчёт того, чтобы заключать в апострофы все значения из текстбоксов smile ?
З.Ы. Для каких извращений вам вообще понадобилось использовать голый SQL smile ?

Автор: Rbv 8.6.2007, 21:41
Цитата(HellMasterHaiL @ 8.6.2007,  14:46)
а точно все полня таблици catalog - строковго типа??? (char,varchar и тд) ???

можешь показать чисто сформированную строку SQL? со всеми значениями!

Все поля здесь:
http://img261.imageshack.us/img261/1093/catalogdh5.jpg

Это чисто сформированная строка SQL.

Насчет второго вопроса я не понял.

Спасибо за помощь.

Автор: Exception 9.6.2007, 07:10
Что ты не понял? Строковые значения в запросе SQL нужно заключать в апострофы (').
Неправильно: INSERT INTO SomeTable (Field1, Field2) VALUES (A, B)
Правильно: INSERT INTO SomeTable (Field1, Field2) VALUES ('A''B')
То есть твой код должен выглядеть так:
Код
Private Function Apostrophize (s As String) As String
    Return "'" + s + "'"
End Function

' ...
query = "INSERT INTO catalog (...) VALUES (" + Apostrophize(txtname.Text) + "," + Apostrophize(txtdescription.Text) + ... + ")"
То есть введённые пользователем значения мы должны обернуть в апострофы. Чтобы не захламлять код ещё больше, я выделил код добавления апострофов в отдельную функцию; её следовало бы назвать короче (можешь так и сделать).

Автор: Rbv 9.6.2007, 11:08
Так у меня все и есть в апострофах, ведь:
Код

query = "insert into catalog(name,description,runtime,genre,type,price,supplier_id) values('" & Me.txtname.Text & "','" & Me.txtdescription.Text & "','" & Me.txtminutes.Text & "','" & Me.cbogenre.SelectedItem & "','movie','" & Me.txtprice.Text & "',1)"


insert into catalog(...) values('" & Me.txtname.Text & "')


Попробовал твой вариант, тоже не пашет.

П.С- я работаю в Студио 2003.

П.С.С- вот так, в другом форме работает:

Код

query = "insert into workers(id,fname,lname,shift,birthday,start_date,city,adress,phone,cell_phone,sex) values('" & Me.txtid.Text & "','" & Me.txtfname.Text & "','" & Me.txtlname.Text & "','" & Me.cboshift.SelectedItem & "','" & Me.dtpbd.Value & "','" & Date.Today.ToShortDateString & "','" & Me.cbocity.SelectedItem & "','" & Me.txtadress.Text & "','" & phone & "','" & cphone & "','" & Me.cbosex.SelectedItem & "')"

Автор: Exception 10.6.2007, 14:01
Постой-ка.. А зачем ты заключаешь в апострофы числовые значения? Не надо так делать. Убери их вокруг txtminutes.Text и txtprice.Text.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)