Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

помогите, пожалуйста, разобраться...   Найти похожие ветки 

 
alienka   (2003-11-24 16:20) [0]

...почему виснет программа?
Начну по порядку: данные беруться из текстового файла, упорядочиваются и заносятся в массивы, дальше их нужно также упорядоченно добавить в базу. Вот на этом этапе приложение и виснет :(
Причем не сразу, а после примерно 300 занесенных в базу записей.
Ошибка "access violation..." и т.д. Массивы при этом полнехоньки и данные там сидят корректные.
Использую для доступа к базе ado компоненты (добавляю adoQuery)
Подскажите, что сделать, как добавить корректно данные? Массивы большие...


 
chtr ©   (2003-11-24 16:23) [1]

А может попробовать напрямую, без массивов?


 
alienka   (2003-11-24 16:24) [2]

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


 
VAleksey ©   (2003-11-24 17:08) [3]


> Может код сюда бросить?

ага...


 
alienka   (2003-11-24 17:33) [4]

это добавление из массива в базу

for i:=0 to n-1 do
begin
for t:=0 to nn-1 do
begin
qtest.SQL.Clear;
qtest.SQL.add("insert into calls(dattim, nubm, usl, dlit, st, napr, temp) values");
qtest.SQL.add(" (""" + m[i].a3[t,0] + """, """+m[i].a3[t,1]+""", """+m[i].a3[t,2]+""", """+m[i].a3[t,3]+""", """+m[i].a3[t,4]+""", """+m[i].a3[t,5]+""", """ + m[i].a1 + """)");
qtest.ExecSQL;
end;


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


 
Val ©   (2003-11-24 17:52) [5]

>alienka (24.11.03 17:33) [4]
1)проверьте, верно ли формируется текст запроса
2)используйте параметры вместо конкатенации


 
alienka   (2003-11-24 18:10) [6]

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


 
Val ©   (2003-11-24 18:19) [7]

>alienka (24.11.03 18:10) [6]
ну так оттрассируйте код и посмотрите на значения индексов и данных массивов во время возникновения ошибки, в чем проблема?
какая субд?


 
alienka   (2003-11-24 18:25) [8]

субд mysql
сейчас попробую оттрасировать, правда есть шанс только к завтрашнему утру закончить все :)


 
Val ©   (2003-11-24 18:40) [9]

>alienka (24.11.03 18:25) [8]
... правда есть шанс ...

в смысле? поставьте брекпойнт с условием.


 
Michail Dalakov   (2003-11-24 21:07) [10]

Локализуй место где происходит зависание. Если модуль небольшой
и возникают проблемы с Breakpoint, то закоментируй места где программа может зависнуть используя {}.
Советы:
Не рекомендую пользоваться """, потому-что если в элементе массива, встретится символ " то программа вылетит с ошибкой, для того чтобы такого небыло используй AnsiQuotedStr,
массивами следует пользоваться очень осторожно, посмотри реально ли подходит данный тип данных,может лучше воспользоваться вариантом, и наконец для того чтобы
ловить ошибки в SQL предлагаю использовать Profiler, он входит в
стандартную поставку MSSQL



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

Текущий архив: 2003.12.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-52388
MadAngel
2003-11-24 04:39
2003.12.16
Просмотрщик


7-52424
Calm
2003-10-10 16:21
2003.12.16
Сколько раз возникнет событие TServerSocket.ClientRead?


14-52359
Думкин
2003-11-23 05:18
2003.12.16
С днем рождения! 23 ноября.


1-52248
Oleg_
2003-12-04 13:50
2003.12.16
webbrowser


1-52212
pepper
2003-12-02 10:42
2003.12.16
копирование файлов