Главная страница
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.02 c
8-52294
JS
2003-08-21 12:43
2003.12.16
Декодировка звука


14-52391
Brahman
2003-11-21 14:26
2003.12.16
Женщина == Web-service


6-52327
неРуль
2003-10-06 12:10
2003.12.16
перенаправление порта


6-52330
sapsi
2003-10-21 10:16
2003.12.16
Вложенный текстовой файл приходит по почте с искажениями


1-52232
Genry
2003-12-04 17:23
2003.12.16
Внешний COM-сервер