Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392

При выполнении запроса, зависает программа

20.06.2014, 13:52. Показов 4052. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые форумчане и гуру Delphi. Подскажите пожалуйста. Выполняю такой код программы
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
unit main;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,Data.SqlExpr, Data.DbxSqlite, Datasnap.Provider,
  Datasnap.DBClient,Data.DBXCommon;
 
type
 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
 
TMyThread = class(TThread) //MyThread - заданное нами имя потока.
  private
    { Private declarations }
  protected
    procedure Execute; override;
    procedure UpdateContacts;
  end;
 
var
  Form1: TForm1;
  MyThread: TMyThread;
 
implementation
 
procedure TMyThread.UpdateContacts;
var
SQLConnection  : TSQLConnection;      // Поключение к базе sqlite
begin
     SQLConnection:= TSQLConnection.Create(Nil);
     SQLConnection.DriverName:='Sqlite';
     SQLConnection.Params.Values['Database']:='C:\Users\Администратор\Documents\RAD Studio\Projects\ITMagicNEW\Win32\Debug\data.db';
     SQLConnection.Params.Values['FailIfMissing']:='False';
     SQLConnection.Params.Values['ColumnMetaDataSupported']:='False';
     SQLConnection.LoginPrompt:=False;
     //SQLConnection.ExecuteDirect('PRAGMA auto_vacuum=1');
     SQLConnection.Connected:=true;
 
     SQLConnection.Execute('UPDATE contacts SET operator_id=(SELECT operator_id FROM ru_operator_data_new WHERE INSTR( SUBSTR( phone, 2 ) , ru_operator_data_new.oper_prefix)  =1 ORDER BY LENGTH( oper_prefix ) DESC LIMIT 1)',nil);
end;
 
 
//Нужно создать процедуру Execute, уже описанную в классе TMyThread
procedure TMyThread.Execute;
begin
Synchronize(UpdateContacts);
end;
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
//Вначале нужно создать экземпляр потока:
  MyThread:=TMyThread.Create(False);
//Параметр False запускает поток сразу после создания, True - запуск впоследствии , методом Resume
//Далее можно указать параметры потока, например приоритет:
  MyThread.Priority:=tpNormal;
  MyThread.FreeOnTerminate:=True;
end;
 
end.
Поток доходит да SQLConnection.Execute и все программа зависает пока запрос не выполниться... Как решить ? Будьте так любезны подскажите....
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2014, 13:52
Ответы с готовыми решениями:

Ошибка при выполнении запроса
Добрый вечер! (под вечер голова уже перестала работать) Есть простенькая БД, в ней одна таблица главная, две подчиненные. Необходимо...

Как убрать часики при выполнении SQL запроса?
Здраствуйте ребята, нужна срочная помощь. То что нужно сделать написано в названии темы.SQL запрос у меня на OnMouseUp, поэтому эти часики...

Мин и Макс в Fast report при выполнении запроса
Скажите я выполняю запрос, вес нормально работает так как надо, но когда я вывожу на печать или просмотреть не получается в Fast'e что не...

6
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
20.06.2014, 14:23
Цитата Сообщение от Critically Посмотреть сообщение
procedure TMyThread.Execute;
begin
Synchronize(UpdateContacts);
end;
Опять эти грабли. И зачем было делать доппоток, если всё равно вся работа выполняется в главном потоке?
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
20.06.2014, 14:26  [ТС]
Суть в том что, в основной программе это должно выполняться в отдельном потоке. Вопрос был, почему висит форма, при выполнении запроса ?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
20.06.2014, 14:40
Цитата Сообщение от Critically Посмотреть сообщение
Вопрос был, почему висит форма, при выполнении запроса ?
Потому что это выполняется в главном потоке приложения. А в "отдельном" потоке не выполняется ничего.
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
20.06.2014, 14:50  [ТС]
Как решить проблему можете подсказать, я не совсем вас понимаю к сожалению...
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
20.06.2014, 14:57
Лучший ответ Сообщение было отмечено Critically как решение

Решение

Выбрось Synchronize к той самой бабушке.
2
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
20.06.2014, 15:12  [ТС]
Теперь работает кажется, но все время кружиться кружок курсора, как будто висит программа. А если навести на заголовок формы, то нормально стрелкой становиться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.06.2014, 15:12
Помогаю со студенческими работами здесь

Ошибка при выполнении запроса Trying to store a string of length 30 into field that can only contain 20
Добрый день! Возникла проблема с IBQ... with IBQSPRED do begin close; SQL.Clear; SQL.Add('select (case when...

Postresql зависает при выполнении запроса с order и limit
Есть такой запрос select * from log where id = 4123423338 order by time limit 1; он зависает и не выполняется. Такие запросы ...

Зависает программа при выполнении printArray
Зависает программа при выполнении этого printArray(a, 15-(deletefromArray(a, 15))); #include <stdio.h> #include <stdlib.h>...

Зависает программа при выполнении цикла
Здравствуйте, на 3 кнопки написаны циклы, при их выполнении программа зависает, подскажите в чем проблема пожалуйста, за кривые коды не...

При выполнении парсинга программа зависает
Занимаюсь C# недавно. Поэтому не могу решить проблему самостоятельно. При выполнении кода программа на пару секунд (время выполнения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru