Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Вниз

Ввод данных в таблицу (Insert и Commit).   Найти похожие ветки 

 
vigo   (2005-07-18 11:48) [0]

Добрый день. Вопрос по Insert"y в таблицу. Подгружаю данные из файла, подготавдиваю и пишу в таблицу. После 10-ого Insert"a (на 11-м)пишет ошибку: "ORA-24337: идентификатор команды не подготовлен".
if not OpenDlg.Execute then Exit else
 begin
  if SQLConnection.Connected <> True then
   try
    SQLConnection.Connected := True;
    SQLConnection.Open;
    except
     on E: Exception do ShowMessage(E.Message);
   end;
  Assignfile(f, OpenDlg.FileName);
  Reset(f);
  while not eof(f) do
   begin
    readln(f, s);
    // некоторые манипуляции с данными строки
    SQLDataSet.CommandText := ("insert into invo.komunal values ("+res+")"); //res - это подготовленные данные строки
    SQLDataSet.ExecSQL;
   end;
  CloseFile(f);
 end;
end;

И ещё один вопрос как коммитить (есть подозрение что проблемма связано именно с этим)?


 
Johnmen ©   (2005-07-18 11:57) [1]

Забавно..
SQLConnection.Connected <> True
и
SQLConnection.Connected := True;
SQLConnection.Open;

и
если коннекта нет, всё равно инсертим

А так - всё дело в том самом файле, в его содержимом.


 
evvcom ©   (2005-07-18 11:58) [2]


> SQLDataSet.CommandText := ("insert into invo.komunal values
> ("+res+")");

Вот таких программистов потом администраторы Oracle называют "уродами", потому что постоянно приходиться чистить из-за них Shared Pool сервера.


 
Reindeer Moss Eater ©   (2005-07-18 11:59) [3]

readln(f, s);

ShowMessage(Res);

SQLDataSet.CommandText := ("insert into invo.komunal values ("+res+")"); //res - это подготовленные данные строки


 
Val ©   (2005-07-18 12:01) [4]

ORA-24337 statement handle not prepared

Cause: A statement cannot be executed before making preparing a request.

Action: Prepare a statement before attempting to execute it.


Что содержит res в этом случае?
Перейдите на параметры, кстати.


 
isasa ©   (2005-07-18 12:08) [5]

А кто проверит res на наличие в ней одинарной кавычки (") ?


 
vigo   (2005-07-18 12:12) [6]


> evvcom ©   (18.07.05 11:58) [2]

Объясни как insert"ить правильно, если не секрет?


 
vigo   (2005-07-18 12:13) [7]


> isasa ©   (18.07.05 12:08) [5]

ага, в этом и была проблемма.


 
evvcom ©   (2005-07-18 12:15) [8]

insert into invo.komunal values (:var1, :var2, :var3)


 
evvcom ©   (2005-07-18 12:23) [9]

+ к [8]:
запрос таким образом создается один раз, подготавливается (prepare явно или неявно) и далее данные передаются через параметры.
Плюсы:
1. Не тратится время на каждом шаге цикла на формирование, подготовку (разбор, компиляция) запроса.
2. В Shared Pool окажется только один такой запрос, и он уже (после prepare) будет в оперативной памяти сервера.
3. В случае работы с датой/временем, а также числами с плавающей запятой избегаем проблем с региональными настройками.
Минусы: что-то я их не вижу.


 
vigo   (2005-07-18 12:26) [10]

в смысле в виде параметров? то есть res(все данные), грубо говоря, "разбивать" на несколько параметров?


 
vigo   (2005-07-18 12:27) [11]

спасибо...


 
isasa ©   (2005-07-18 13:39) [12]

Зачем на несколько
insert into invo.komunal values (:res)
где res - строковый параметр

но все равно надо делать, хотя-бы,
....
AnsiReplaceStr(res, """", """""");

По поводу использования параметров, не факт, в данном случае
....SQL.Text:="insert into invo.komunal values ("+AnsiReplaceStr(res, """", """""")+")";
ИМХО, локоничнее


 
evvcom ©   (2005-07-18 13:41) [13]


> Зачем на несколько
> insert into invo.komunal values (:res)
> где res - строковый параметр

И что? Разве требуется всю эту белиберду засунуть в одно строковое поле?
На каждое поле свой параметр!


 
Val ©   (2005-07-18 13:54) [14]

>"локоничнее" - нафиг. нормально надо делать.


 
s_s   (2005-07-18 14:17) [15]

D6,QR3.0

Здравствуйте. Возникла проблема: с помощью SQL-запроса составляю отчет с группированием по полю. Все выходит нормально, но Group Footer сумму считает неправильно. например:
2
5
сумма:7
4
5
6
сумма:24
......
Не зна даже что и делать!!!!!!??????


 
S_s   (2005-07-18 14:20) [16]

D6,QR3.0

Здравствуйте. Возникла проблема: с помощью SQL-запроса составляю отчет с группированием по полю. Все выходит нормально, но Group Footer сумму считает неправильно. например:
2
5
сумма:7
4
5
6
сумма:24
......
Не зна даже что и делать!!!!!!??????


 
evvcom ©   (2005-07-18 15:08) [17]


> Не зна даже что и делать!!!!!!??????

Вопрос в своей ветке задать.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
1-1123484706
Новичёк
2005-08-08 11:05
2005.08.28
DLL и его процедуры и функции


1-1123585085
Андрей Жук
2005-08-09 14:58
2005.08.28
Приведение типов в наследниках


8-1113919174
MAXIMUM666
2005-04-19 17:59
2005.08.28
Зацикливание


1-1123669045
BFG9k
2005-08-10 14:17
2005.08.28
RichEdit с картинками


14-1123249871
Jeer
2005-08-05 17:51
2005.08.28
Ни кто из нас так ни где хорошо не работал как в своем резюме





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский