Форум: "Базы";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
Внизпомогите, пожалуйста, разобраться... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c