Вопросы программирования и использования среды Lazarus.
Модератор: Модераторы
NewUser
новенький
Сообщения: 97 Зарегистрирован: 08.05.2007 13:28:40
Сообщение
NewUser » 14.05.2007 16:34:03
процедура записи в БД данных из поля Edit2
Код: Выделить всё
procedure TForm1.Button4Click(Sender: TObject); begin SQLQuery2.Params.ParamByName('NAME').Value:=Edit2.Text; try SQLQuery2.ExecSQL; except ShowMessage('Ошибка!'); SQLTransaction1.RollbackRetaining; exit; end; SQLTransaction1.CommitRetaining; SQLQuery1.Close; SQLQuery1.Open; end; запрос в SQLQuery2
Код: Выделить всё
INSERT INTO OTDEL (OTDEL_NAME) VALUES (:NAME)
параметр NAME настроен как string - input
Brainenjii
энтузиаст
Сообщения: 1351 Зарегистрирован: 10.05.2007 00:04:46
Сообщение
Brainenjii » 14.05.2007 20:37:09
А зачем так ?
Можно ведь просто
Код: Выделить всё
SQLQuery2.SQL.Clear; SQLQuery2.SQL.Add('INSERT INTO OTDEL (OTDEL_NAME) VALUES ' + #41 + #39 + Edit2.Text + #39 + #41); SQLQuery2.ExecSQL;
По крайней мере я так делаю
На сам вопрос не смогу ответить... Возможно нужно использовать какой-нить аналог ParamDsql (из FBLib'a), или же параметры - это только для ХП...
Кстати, что именно за ошибка ?
Attid
долгожитель
Сообщения: 2588 Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:
Сообщение
Attid » 15.05.2007 01:45:01
NewUser
учимся оформлять сообщение, лучше читается, охотнее отвечают.
и текст ошибки в студию, на дворе май месяц все экстрасенсы на солнышке греются.
Brainenjii
можно еще сократить =)
Код: Выделить всё
SQLQuery2.SQL.Text := 'INSERT INTO OTDEL (OTDEL_NAME) VALUES ' + #41 + #39 + Edit2.Text + #39 + #41; SQLQuery2.ExecSQL; хотя параметизированые мне больше нравятся и понятнее они
Код: Выделить всё
SQLQuery2.SQL.Text := 'INSERT INTO OTDEL (OTDEL_NAME) VALUES :1' ; SQLQuery2.Params.ParamByName('1').Value:=Edit2.Text; SQLQuery2.ExecSQL;
NewUser
новенький
Сообщения: 97 Зарегистрирован: 08.05.2007 13:28:40
Сообщение
NewUser » 15.05.2007 09:56:25
не помогает, выдает ошибку
Project raised exception class 'EIBDatabase error'
процедура fpc_raiseexception
использую код
Код: Выделить всё
procedure TForm1.Button4Click(Sender: TObject); begin SQLQuery2.SQL.Text := 'INSERT INTO OTDEL (OTDEL_NAME) VALUES :NAME'; SQLQuery2.Params.ParamByName('NAME').Value:=Edit2.Text; SQLQuery2.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end;
haword
постоялец
Сообщения: 301 Зарегистрирован: 02.03.2006 10:34:40
Сообщение
haword » 15.05.2007 10:55:52
NewUser писал(а): не помогает, выдает ошибку
Project raised exception class 'EIBDatabase error'
процедура fpc_raiseexception
использую код
Код: Выделить всё
procedure TForm1.Button4Click(Sender: TObject); begin SQLQuery2.SQL.Text := 'INSERT INTO OTDEL (OTDEL_NAME) VALUES :NAME'; SQLQuery2.Params.ParamByName('NAME').Value:=Edit2.Text; SQLQuery2.ExecSQL; SQLQuery1.Close; SQLQuery1.Open; end;
SQLQuery2.SQL.Text := 'INSERT INTO OTDEL (OTDEL_NAME) VALUES (:NAME)';
SQLQuery2.Params.ParamByName('NAME').Value:=Edit2.Text;
SQLQuery2.ExecSQL;
так отрабатывает?
NewUser
новенький
Сообщения: 97 Зарегистрирован: 08.05.2007 13:28:40
Сообщение
NewUser » 15.05.2007 11:50:22
нет, не работает
какие необходимо установить свойства у SQLQuery? может что не верно я делаю?
shade
энтузиаст
Сообщения: 879 Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:
Сообщение
shade » 15.05.2007 13:11:24
Давно, таким макаром не работал с БД, но рискну преположить:
SQLQuery2.Params.ParamByName(':NAME ').Value:=Edit2.Text;
или так
SQLQuery2.Params.ParamByName('NAME').AsString:=Edit2.Text;
На какой строчке вообще вылетает ошибка?
Attid
долгожитель
Сообщения: 2588 Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:
Сообщение
Attid » 15.05.2007 13:40:33
какие необходимо установить свойства у SQLQuery? может что не верно я делаю?
только ДБ и трнзакцию.
ошибки берешь копируешь из окошка лазаруса с капшеном "messages"
если это не предстовляется возможным, то
ошибку можно сохранить в мемо таким способом
Код: Выделить всё
try SQLQuery2.SQL.Text := 'INSERT INTO OTDEL (OTDEL_NAME) VALUES (:NAME)'; SQLQuery2.Params.ParamByName('NAME').Value:=Edit2.Text; SQLQuery2.ExecSQL; except on E: Exception do memo1.lines.text := (E.Message + #13#10'with sql:'#13#10 + SQLQuery2.SQL.Text); end;
NewUser
новенький
Сообщения: 97 Зарегистрирован: 08.05.2007 13:28:40
Сообщение
NewUser » 15.05.2007 13:46:07
всем спасибо. разобрался сам. была ошибка в другом месте в SQL запросе