powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Программное создание компонентов и подключение к бд
7 сообщений из 7, страница 1 из 1
Программное создание компонентов и подключение к бд
    #39575885
kamero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здраствуйте. Решил создать подключение к БД не кидая компоненты на форму. То есть полностью пустая форма. И как бы подключение происходит. Но вот запрос почему то не выполняется...

Код: pascal
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.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
unit Unit1;

interface

uses
  Windows, IniFiles, Messages, Forms, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,
  uADStanIntf, uADStanOption, uADStanDef, uADPhysIntf, uADGUIxIntf,
  uADDatSManager, uADStanError, uADStanParam, uADDAptIntf,
  uADGUIxFormsWait, DB, uADCompDataSet, uADCompClient, uADPhysManager,
  uADPhysMySQL, ActiveX, ComObj, Variants, ExtCtrls, ShellApi, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure ParamsToConDB;
    procedure ConToDB;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ADConnection1: TADConnection;
  ADTransaction1: TADTransaction;
  ADGUIxWaitCursor1: TADGUIxWaitCursor;
  ADPhysMySQLDriverLink1: TADPhysMySQLDriverLink;
  MyQuery1: TADQuery;
  DriverID, Database, User_Name, Password, CharacterSet, Server, Port: string;
  
implementation

{$R *.dfm}

procedure TForm1.ParamsToConDB;
var
  ST : TIniFile;
begin
if FileExists(GetCurrentDir + '\' + 'config.ini') then
  begin
    ST := TIniFile.Create(ExtractFilePath(paramstr(0)) + 'config.ini');
    DriverID := ST.ReadString('Base','DriverID','MySQL');
    Database:= ST.ReadString('Base','Database','msservice');
    User_Name:= ST.ReadString('Base','User_Name','root');
    Password:= ST.ReadString('Base','Password','root');
    CharacterSet:= ST.ReadString('Base','CharacterSet','cp1251');
    Server:= ST.ReadString('Base','Server','127.0.0.1');
    Port:= ST.ReadString('Base','Port','3306');
    ST.Free;
  end
    else
  begin
    ST := TIniFile.Create(ExtractFilePath(paramstr(0)) + 'config.ini');
    ST.WriteString('Base','DriverID','MySQL');
    ST.WriteString('Base','Database','msservice');
    ST.WriteString('Base','CharacterSet','cp1251');
    ST.WriteString('Base','Server','127.0.0.1');
    ST.WriteString('Base','Port','3306');
    DriverID := ST.ReadString('Base','DriverID','MySQL');
    Database:= ST.ReadString('Base','Database','msservice');
    User_Name:= ST.ReadString('Base','User_Name','root');
    Password:= ST.ReadString('Base','Password','root');
    CharacterSet:= ST.ReadString('Base','CharacterSet','cp1251');
    Server:= ST.ReadString('Base','Server','127.0.0.1');
    Port:= ST.ReadString('Base','Port','3306');
    ST.Free;
  end;
end;

procedure TForm1.ConToDB;
begin
ADConnection1 := TADConnection.Create(nil);
ADTransaction1 := TADTransaction.Create(nil);
ADGUIxWaitCursor1 := TADGUIxWaitCursor.Create(nil);
ADPhysMySQLDriverLink1 := TADPhysMySQLDriverLink.Create(nil);
MyQuery1 := TADQuery.Create(nil);
MyQuery1.Connection := ADConnection1;
MyQuery1.Transaction := ADTransaction1;

  If not ADConnection1.Connected then
    begin
      try
        ADPhysMySQLDriverLink1.VendorLib := 'libmySQL.dll';
        ADConnection1.LoginPrompt := False;
        ADConnection1.Transaction := ADTransaction1;
        ADConnection1.Params.Clear;
        ADConnection1.DriverName:=DriverID;
        ADConnection1.Params.Add('Database='+Database);
        ADConnection1.Params.Add('User_Name='+User_Name);
        ADConnection1.Params.Add('Password='+Password);
        ADConnection1.Params.Add('CharacterSet='+CharacterSet);
        ADConnection1.Params.Add('Server='+Server);
        ADConnection1.Params.Add('Port='+Port);
        ADConnection1.Connected:=true;
      except
        on E: Exception do
          begin
            ADConnection1.Connected:=false;
         end;
      end;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ParamsToConDB;
 ConToDB;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
If MyQuery1.Connection= ADConnection1 then
begin
  MyQuery1.Transaction.StartTransaction;
    try
      MyQuery1.Close;
      MyQuery1.SQL.Text := 'Insert into process (Caption, Date_Time) values (:pCaption, :pDate_Time);';
      MyQuery1.prepare;
      MyQuery1.ParamByName('pCaption').Value := '123';
      MyQuery1.ParamByName('pDate_Time').AsDateTime := Now;
      MyQuery1.ExecSQL;
      MyQuery1.Transaction.Commit;
    except
      MyQuery1.Transaction.Rollback;
    end;
  MyQuery1.Free;
end;  
end;

end.


Включал пошаговую отладку. И в момент когда попадаю в try ловлю ошибку.
...
Рейтинг: 0 / 0
Программное создание компонентов и подключение к бд
    #39575893
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за инфантилизм ? Сделайте пробное приложение и статически вставьте туда параметры подключения и запрос.
И найдете ошибку.
...
Рейтинг: 0 / 0
Программное создание компонентов и подключение к бд
    #39575899
kamero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV,

В том то и дело. Что это и есть пробный проект. Как бы к БД я подключаюсь, но запрос не выполняется. Типо Connection пустое, но оно не пустое... Если выставлю компоненты, то всё будет работать.
...
Рейтинг: 0 / 0
Программное создание компонентов и подключение к бд
    #39575929
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kamero,

1) Уверены, что есть соединение с базой? В случае, если соединения нет, вы переводите ADConnection1.Connected:=false; Без отображения ошибки.
2) проверять надо ADConnection1.Connected
3) Если нажать второй раз на Button2, то получит AV.
...
Рейтинг: 0 / 0
Программное создание компонентов и подключение к бд
    #39575937
kamero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

Да соединение есть. Выставляю "If ADConnection1.Connected then" возвращает True.

В запросе чисто для проверки вставлял "If MyQuery1.Connection= ADConnection1 then" чтобы убедится что оно не пустое.
...
Рейтинг: 0 / 0
Программное создание компонентов и подключение к бд
    #39575941
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kamero,

у ADTransaction1 установлен Connection?
...
Рейтинг: 0 / 0
Программное создание компонентов и подключение к бд
    #39575948
kamero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45,

упс)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Программное создание компонентов и подключение к бд
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]