Topic: [Скрипт] Подключение к MySQL с помощью скрипта

Пример, как реализовать подключение к MySQL используя скрипт, без использования встроенного диалога подключения.

procedure Form1_OnShow (Sender: string; Action: string);
begin
     frmWait.Show;
     Application.ProcessMessages;

     {$MySQL disable_connectdialog}
     Form1.MySQLConnection.Server := '127.0.0.1';
     Form1.MySQLConnection.Port := 3306;
     Form1.MySQLConnection.Username := 'root';
     Form1.MySQLConnection.Password := 'root';
     Form1.MySQLConnection.Database := 'mvd';

     try
         Form1.MySQLConnection.Connect;
     except
         frmWait.Close;
         ShowMessage('Can''t connect to database.');
         Form1.Close;
     end;

     if Form1.MySQLConnection.Connected then
     begin
         UpdateDatabase(''); // to fill ComboBoxes
         Form1.GridEmployees.dbUpdate; // if you have TableGrid on first form with option "Enable auto execution", you should call method dbUpdate manually
     end;
     frmWait.Close;
end;




begin


end.


Проект с данным примером:

Post's attachments

Attachment icon Connect to MySQL using script.zip 7.49 kb, 1364 downloads since 2016-08-01 

Dmitry.

Re: [Скрипт] Подключение к MySQL с помощью скрипта

а с какой версии это можно делать? и ещё, какая была последняя бесплатная версия?

Re: [Скрипт] Подключение к MySQL с помощью скрипта

vova_klad wrote:

а с какой версии это можно делать? и ещё, какая была последняя бесплатная версия?

Примерно с версии 2.4, последняя последняя версия 1.44

Dmitry.

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Приветствую.
А можно ли скриптом подключаться к сторонней базе SQLite для того чтобы потом управлять ею?

Re: [Скрипт] Подключение к MySQL с помощью скрипта

FROST wrote:

Приветствую.
А можно ли скриптом подключаться к сторонней базе SQLite для того чтобы потом управлять ею?


Можно

SQLExecute('ATTACH DATABASE ''d:\testDB.db'' as ''TEST''');

использование

SELECT TEST.person.firstname, TEST.person.lastname FROM TEST.person

но при этом ваш проект должен использовать СУБД SQLite

Dmitry.

6 (edited by FROST 2017-01-25 15:17:39)

Re: [Скрипт] Подключение к MySQL с помощью скрипта

DriveSoft wrote:

но при этом ваш проект должен использовать СУБД SQLite

Первые фразы вызвали восторг, последняя фраза немного смутила. Что это значит на практике использование СУБД SQLite? Это как то скриптом надо задействовать библиотеку sqlite3.dll? Или просто в настройках должна стоять база SQLite?
Еще вопрос:
1. Как отключиться для подключение к другой (или можно управлять сразу несколькими)?

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Можно наоборот, при использовании проектом СУБД SQLite, подключаться к MySQL базе с помощью скрипта, пример
http://myvisualdatabase.com/forum/viewt … 622#p14622


Если ваш проект использует СУБД MySQL, подключиться к СУБД SQLite пока возможности нет.

отключиться можно так

SQLExecute('DETACH DATABASE ''TEST''');

но думаю вы можете подключить и сразу несколько.

Dmitry.

Re: [Скрипт] Подключение к MySQL с помощью скрипта

А как подключиться если в проекте используется отдельная форма авторизации, после которой уже  появляется главная форма?
Пробовал подключаться данным скриптом, но вылетает ошибка.

Post's attachments

Attachment icon 343434.jpg 21.04 kb, 368 downloads since 2017-12-20 

9 (edited by Bullet3203 2017-12-21 19:00:01)

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Bullet3203 wrote:

А как подключиться если в проекте используется отдельная форма авторизации, после которой уже  появляется главная форма?
Пробовал подключаться данным скриптом, но вылетает ошибка.

Пытался прописать этот скрипт в форме окна авторизации, но ругается на MySQLConnection, будто неизвестный параметр

Post's attachments

Attachment icon qas.jpg 15.09 kb, 371 downloads since 2017-12-21 

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Добрый день! Скажите пожалуйста, как можно реализовать автоматическое подключение к БД без использования диалогового окна, чтобы пользователь не заморачивался с этим, а сразу выходило окно логина и пароля?

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Если вы прочитаете первое сообщение в топике, то вы встретите там волшебные строки:

{$MySQL disable_connectdialog}
     Form1.MySQLConnection.Server := '127.0.0.1';
     Form1.MySQLConnection.Port := 3306;
     Form1.MySQLConnection.Username := 'root';
     Form1.MySQLConnection.Password := 'root';
     Form1.MySQLConnection.Database := 'mvd';

     try
         Form1.MySQLConnection.Connect;
     except
         frmWait.Close;
         ShowMessage('Can''t connect to database.');
         Form1.Close;
     end;

Re: [Скрипт] Подключение к MySQL с помощью скрипта

konstantin wrote:

Если вы прочитаете первое сообщение в топике, то вы встретите там волшебные строки:

{$MySQL disable_connectdialog}
     Form1.MySQLConnection.Server := '127.0.0.1';
     Form1.MySQLConnection.Port := 3306;
     Form1.MySQLConnection.Username := 'root';
     Form1.MySQLConnection.Password := 'root';
     Form1.MySQLConnection.Database := 'mvd';

     try
         Form1.MySQLConnection.Connect;
     except
         frmWait.Close;
         ShowMessage('Can''t connect to database.');
         Form1.Close;
     end;

Добрый день! Конечно же я это прочитал и даже вставил в свой скрипт, но он почему то не работает и выдает ошибку, несмотря на то что ввожу свои данные и название БД и логин с паролем. Вот и вопрос возник поэтому! Потому как не коннектится и выдает ошибку!

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Добрый день! Конечно же я это прочитал и даже вставил в свой скрипт, но он почему то не работает и выдает ошибку, несмотря на то что ввожу свои данные и название БД и логин с паролем. Вот и вопрос возник поэтому! Потому как не коннектится и выдает ошибку!

Очень сложно гадать по вашему посту - причин может быть масса - от блокировки порта и IP адреса, неверной учетной записи в БД до несовпадения имени главной формы. Попробуйте, коннектится ли к базе любая сторонняя прога,например  Workbench. Проверьте, что вместо Form1 указано название вашей главной формы, проверьте кавычки и их отсутствие у порта.

Re: [Скрипт] Подключение к MySQL с помощью скрипта

delphinsl wrote:

Добрый день! Скажите пожалуйста, как можно реализовать автоматическое подключение к БД без использования диалогового окна, чтобы пользователь не заморачивался с этим, а сразу выходило окно логина и пароля?

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

я сделал не большой проект http://myvisualdatabase.com/forum/viewtopic.php?id=7125 попробуйте использовать его

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Подскажите как реализовать скриптом подключение к базе через 2 ip адреса
Например в локальной сети через есть 2 подсети и нужно чтобы использовалось 2 ip адреса при подключении к базе

16 (edited by vovka3003 2021-09-17 22:13:59)

Re: [Скрипт] Подключение к MySQL с помощью скрипта

procedure Connect;
    var ok: boolean;
begin
ok:=false;

try
    // попытка 1...
    ok:=true;
except
end;

if not ok then

try
    // попытка 2...
    ok:=true;
except
end;

if not ok then
    ShowMessage('Не удалось подключиться ни к одному IP');
end;



begin
    Connect;
end.

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Спасибо за скрипт а подскажи в какой части моего скрипта вставить твой ?


procedure frmStart_OnShow (Sender: TObject; Action: string);
begin
     {$MySQL disable_connectdialog}
     frmStart.MySQLConnection.Server := '192.168.1.1';
     frmStart.MySQLConnection.Port := 3306;
     frmStart.MySQLConnection.Username := 'mvb';
     frmStart.MySQLConnection.Password := '123';
     frmStart.MySQLConnection.Database := 'newbase';
       try
    frmStart.MySQLConnection.Connect;
  except
    frmWait.Close;
    ShowMessage('Проверте подключение к базе данных');
    frmStart.Close;
  end;
     if frmStart.MySQLConnection.Connected then
     begin
    UpdateDatabase(''); // to fill ComboBoxes

    // if you have TableGrid on first form with option
    // "Enable auto execution", you should call method
    // dbUpdate manually
  end;

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Кто нибудь помогите пожалуйста

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Вот так и вставляете в основной части скрипта

<---- вот тут ) до begin end;

begin

end.

самый верхний пост DriveSoft с примером и картинкой.

Re: [Скрипт] Подключение к MySQL с помощью скрипта

sparrow wrote:

Вот так и вставляете в основной части скрипта

<---- вот тут ) до begin end;

begin

end.

самый верхний пост DriveSoft с примером и картинкой.


Ну у меня 2 ip адреса : 192.158.1.1 если на него не подключаемся то пробуем 192.168.1.0

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Поправь пожалуйста если я где то ошибся:


procedure frmStart_OnShow (Sender: TObject; Action: string);
var ok: boolean;
begin
ok:=false;
     {$MySQL disable_connectdialog}
     frmStart.MySQLConnection.Server := '192.168.1.1';
     frmStart.MySQLConnection.Port := 3306;
     frmStart.MySQLConnection.Username := 'mvb';
     frmStart.MySQLConnection.Password := '123';
     frmStart.MySQLConnection.Database := 'base';
       try
       // попытка 1...
    ok:=true;
    frmStart.MySQLConnection.Connect;
  except
  end;
  if not ok then
     frmStart.MySQLConnection.Server := '192.168.0.1';
     frmStart.MySQLConnection.Port := 3306;
     frmStart.MySQLConnection.Username := 'mvb';
     frmStart.MySQLConnection.Password := '123';
     frmStart.MySQLConnection.Database := 'base';
     ok:=true;
     except
  try
    frmWait.Close;
    ShowMessage('Проверте подключение к базе данных');
    frmStart.Close;
  end;
     if frmStart.MySQLConnection.Connected then
     begin
    UpdateDatabase(''); // to fill ComboBoxes

    // if you have TableGrid on first form with option
    // "Enable auto execution", you should call method
    // dbUpdate manually
  end;
  begin
     sUserName := '"'+GetUserName+'"';
     sComputerName := '"'+GetComputerName+'"';          ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  end;

22 (edited by sparrow 2021-09-21 08:44:54)

Re: [Скрипт] Подключение к MySQL с помощью скрипта

procedure frmStart_OnShow (Sender: TObject; Action: string);
var ok: boolean;
begin
  ok:=false;
  {$MySQL disable_connectdialog}
  frmStart.MySQLConnection.Server := '192.168.1.1';
  frmStart.MySQLConnection.Port := 3306;
  frmStart.MySQLConnection.Username := 'mvb';
  frmStart.MySQLConnection.Password := '123';
  frmStart.MySQLConnection.Database := 'base';
  try
       // попытка 1...
    frmStart.MySQLConnection.Connect;       
    ok:=true;    
  except
  end;
  if not ok then
    begin 
      frmStart.MySQLConnection.Server := '192.168.0.1';
      frmStart.MySQLConnection.Port := 3306;
      frmStart.MySQLConnection.Username := 'mvb';
      frmStart.MySQLConnection.Password := '123';
      frmStart.MySQLConnection.Database := 'base';
        try
            // попытка 2...
        frmStart.MySQLConnection.Connect;
        ok:=true;
        except
        end;
    end;
if ok then
    begin
    ShowMessage('Connected');
    UpdateDatabase('');
    end else
    begin
    frmWait.Close;
    ShowMessage('Проверьте подключение к базе данных');
    frmStart.Close;
    end;    
end;

23 (edited by indigen 2023-06-30 18:53:06)

Re: [Скрипт] Подключение к MySQL с помощью скрипта

Для себя на память, да и может быть кому пригодится: Если включено управление ролями, то блок подключения к основной базе MySQL следует выкинуть в отдельную процедуру, а ее вызов определить в главном блоке "begin - end."
Автозаполнение гридов и деревьев проще через цикл сразу после "UpdateDatabase(''); // to fill ComboBoxes":

for i:= 0 to fMain.ComponentCount-1 do
         begin
             if fMain.Components[i].ClassName = 'TdbTreeView' then TdbTreeView(fMain.Components[i]).dbUpdate;
             if fMain.Components[i].ClassName = 'TdbStringGridEx' then TdbTreeView(fMain.Components[i]).dbUpdate;
         end;