Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > libmySQL.dll - рабочая библиотека MySQL5


Автор: Rodman 4.7.2007, 08:18
Дароф. 

Вот постоянно жалуются, что не могут найти библиотеку libmySQL.dll, которая не выдавала б ошибку. Честно говоря, не сталкивался, но вот библиотека с которой я постоянно работаю - и у меня нет проблем!!!

Ловите - и будет Вам счастье!

Для http://forum.vingrad.ru/act-Attach/type/post/id-1252376.html

Автор: fidres 4.9.2007, 15:00
кстати сказать, в каждом мускуле своя библия.
но смысл не в самой библии или её наличии, а в наличие отсутствия файла-описания для конкретной библии!
существует такое понятие как MySQL.pas - это и есть файл-описание или файл-транслятор функций libmysql.dll ОПРЕДЕЛЁННОЙ ВЕРСИИ!!!
то бишь, к своей библии - должен быть свой файл-описание!
если вы используете MySQL версии выше 4 - то и файл-описание вам необходим для мускуля пятой версии (сейчас уже такая существует. кому надо - обращайтесь.)!

Автор: Rodman 4.9.2007, 15:42
Цитата(fidres @  4.9.2007,  15:00 Найти цитируемый пост)
кому надо - обращайтесь.

ну так и выложи тут!!!

Автор: fidres 8.9.2007, 09:15
не могу.
даже архив весит 600 кило. а тут ограничение на загрузку 120 кило.
если хошь - могу мылом намылить.
кидай своё мне в личку.
архив содержит саму либу, файл-описание и плюс небольшой проектик для примера.
в MySQL.pas есть ограничение на количество выводимой инфы - 500 строк, 10 столбцов.
но можно поменять на желаемое количество (правда есть там дальше проверка на всё это дело - её тоже упорядочить нужно. хотя, можно прикинуть как ваще проверку с ограничением убрать.)

Автор: Rodman 10.9.2007, 18:35
от fidres!!!

Автор: fidres 14.9.2007, 05:50
я, кстати, забыл вам ещё сам MySQL.pas прицепить...
в архиве только MySQL5.pas, а он не полный. ну, верней, это своего рода "дополнение" к старому (2001 года) MySQL.pas'у.
забыл, блин.
но, если не посчитаете за флуд, могу сюда его запостить...
или лучше вот чего! я вам .DCUшник сюда кину! о!
его просто в папку проекта надо будет вложить и всё будет тип-топ!..

ага. и пас тоже можно - он небольшенький...
;)

З.Ы. короче закатал и пас и дкушник.

Автор: fidres 17.9.2007, 11:19
ну, в общем, хочу сказать вам следующее.
MySQL5 в принципе и не нужен особо.
в uses пишите mysql, ложите mysql.pas в диру со своей прогой, смотрите какие команды как вызываются и всё это реализуете в своём коде.
до этого работал с libmysql.dll старой версии мускуля с помощью того же mysql.pas'а - всё работало.
теперь вкатал себе мускуль пятёрку - тоже с этим же mysql.pas'ом пашет вполне.
всё упирается в саму библию libmysql.dll!
берёте её с рабочего мускуля и кидаете в свой проект. ложите туда же mysql.pas, в проге делаете какие-то действа по части подключения/передачи запросов и прочее - всё должно работать.
что _libmysq.pas, что MySQL5.pas нужны лишь для того, чтобы реально увидеть КАК можно использовать в своих юнитах технологию написания непосредственно самого кода!
я, немного поэксперементировав со своим кодом, ваще отказался от файлов-интерпритаторов _libmysq.pas и MySQL5.pas. просто брал функции из mysql.pas и применял их в коде своей проги.

то бишь, вся загвоздка заключается в правильном понимании кода - что и куда надо писать!
я делал так:
в uses вставлял 
Код
unit Unit1;
interface
uses Forms, ......., mysql;
(либо можно вставить в implementation - тогда модуль mysql будет доступен только в определённом пространстве программы, а именно будет использоваться в одно отдельном юните)
затем в коде программы выполнял инициализацию переменных, необходимых для работы с mysql.pas'ом
Код
procedure TForm4.Button3Click(Sender: TObject);
var MySQL: PMYSQL;
   MyHost: string;
   MyPort: integer;
   MyUser: string;
   MyPass: string;
     MyDB: string;
   MyTime: longword;
   MyComp: integer;
        k: integer;
       F4: TextFile;
      buf: string[128];
     label u240;
а затем, уже непосредственно в коде нажатия кнопки писал чего мы делаем с этими данными, чего куда и зачем пихаем
Код
      MySQL:=mysql_init(nil);

     // если отсутствует - выводим сообщуху в лог
     if(MySQL=nil)then Fail('Couldn''t init PMYSQL object');

     // попробовать обойтись без установки таймаута? тогда при отключеном серваке возможно придёца снимать задачу аварийно...
     if(mysql_options(MySQL,MYSQL_OPT_CONNECT_TIMEOUT,@MyTime)<>0)then Fail;

     // пробуем соединиться с серваком с параметрами учётки, если не выходит - сообщуха в лог
     if(mysql_real_connect(MySQL,pChar(MyHost),pChar(MyUser),pChar(MyPass),nil,MyPort,nil,MyComp)=nil)then Fail;

     // отсюда пытаемся выбрать БД
     if(mysql_select_db(MySQL,pChar(MyDB))<>0)then Fail else Report.Lines.Add('Connected to '+MyDB+' has successful.');

     // здесь пытаемся в выбраной БД создать таблицу
//   if(mysql_query(MySQL,pChar('CREATE TABLE PROVERKA (id SMALLINT (3) ZEROFILL NOT NULL AUTO_INCREMENT, string CHAR (16) NOT NULL, value TINYINT UNSIGNED DEFAULT 1 NULL, PRIMARY KEY (id), INDEX (string))'))<>0)then Fail;
     finally // если всё прошло гладко - закрываем соединение с серваком
      mysql_close(MySQL);
процедуру для вывода сообщений при возникновении исключений Fail можно вписать непосредственно в обработчик нажатия кнопки, а можно вынести в заголовок формы:
Код
procedure Fail(Msg: string = '');
   begin
    // mysql_errno, mysql_error
     if(Msg='')then Msg:=Format('%d - %s',[mysql_errno(MySQL),mysql_error(MySQL)]);
     raise Exception.Create(CRLF+CRLF+'Fatal Error'+CRLF+'==========='+CRLF+Msg);
   end;
в общем, у меня это выглядит вот так:
Код
procedure TForm4.Button3Click(Sender: TObject);
var MySQL: PMYSQL;
   MyHost: string;
   MyPort: integer;
   MyUser: string;
   MyPass: string;
     MyDB: string;
   MyTime: longword;
   MyComp: integer;
        k: integer;
       F4: TextFile;
      buf: string[128];
     label u240;

 procedure Fail(Msg: string = '');
   begin
    // mysql_errno, mysql_error
     if(Msg='')then Msg:=Format('%d - %s',[mysql_errno(MySQL),mysql_error(MySQL)]);
     raise Exception.Create(CRLF+CRLF+'Fatal Error'+CRLF+'==========='+CRLF+Msg);
   end;

 procedure Versions;
   begin
     Memo1.Lines.Add(CRLF);
     Memo1.Lines.Add('Versions');
     Memo1.Lines.Add('========');
    // mysql_get_server_info
     Memo1.Lines.Add('Server: '+mysql_get_server_info(MySQL));
    // mysql_get_client_info
     Memo1.Lines.Add('Client: '+mysql_get_client_info);
    // mysql_get_proto_info
     Memo1.Lines.Add('Protocol: '+intToStr(mysql_get_proto_info(MySQL)));
   end;

 procedure Statistics;
  var Stats: string;
          P: integer;
   begin
     Memo1.Lines.Add(CRLF);
     Memo1.Lines.Add('Statistics');
     Memo1.Lines.Add('==========');
    // mysql_stat
     Stats:=mysql_stat(MySQL);
     P:=pos('  ',Stats);
    while P>0 do begin
      Memo1.Lines.Add(copy(Stats,1,P-1));
      Stats:=copy(Stats,P+2,MaxInt);
      P:=pos('  ',Stats);
    end;
     Memo1.Lines.Add(Stats);
   end;
begin

  SetForegroundWindow(Handle);
  Screen.Cursor:=crHourGlass;

  label3.Caption:='Подождите, выполняется попытка подключения к серверу MySQL';
  Panel1.Visible:=true;
  application.ProcessMessages;

 for k:=0 to progressbar1.Max do
  begin
    progressbar1.Position:=k;
    sleep(10);
  end;
u240:
   AssignFile(F4,'myset.ini');
  {$I-}
   Reset(F4); // открытие на чтение
  {$I+}
 if(IOResult<>0)then
  begin
    Button1.OnClick(nil); // здесь у меня при исключении создаётся необходимый файл с данными
    goto u240;
   end;
 try
   readln(F4,buf);   // domain

   readln(F4,buf);   // servname
   MyHost:=buf;

   readln(F4,buf);   // port
   MyPort:=StrToInt(buf);

   readln(F4,buf);   // login
   MyUser:=buf;

   readln(F4,buf);   // pass
   MyPass:=buf;

   readln(F4,buf);   // db
   MyDB:=buf;

   readln(F4,buf);   // db_pass

//   Result:=1;
 except
//   Result:=0;
 end;
   Closefile(F4);

  MyTime:=30;      // strToIntDef(EditTime.Text, 30); - оригиналбное значение
  MyComp:=120;  // integer(CheckComp.Checked) * CLIENT_COMPRESS; - оригиналбное значение
  // но так как я предпологаю использовать это всё в локалке - то таких значений достаточно
  // хотя всё это тоже можно вводить ручками при попытке подключения (см. примеры)

 try // попробовать произвести открытие соединения с серваком и записать отчёт в фал

    try // инициируем соединение
      MySQL:=mysql_init(nil);

     // если отсутствует - выводим сообщуху в лог
     if(MySQL=nil)then Fail('Couldn''t init PMYSQL object');

     // попробовать обойтись без установки таймаута? тогда при отключеном серваке возможно придёца снимать задачу аварийно...
     if(mysql_options(MySQL,MYSQL_OPT_CONNECT_TIMEOUT,@MyTime)<>0)then Fail;

     // пробуем соединиться с серваком с параметрами учётки, если не выходит - сообщуха в лог
     if(mysql_real_connect(MySQL,pChar(MyHost),pChar(MyUser),pChar(MyPass),nil,MyPort,nil,MyComp)=nil)then Fail;

     // выводим в лог инфу о серваке
      Memo1.Lines.Add('Connected to MySQL server at '+mysql_get_host_info(MySQL));

     // запрашиваем версии клиента и сервака и помещаем эту инфу в лог
      Versions;

     // запрашиваем некоторую статистику о серваке и так же выводим её в лог
      Statistics;

     // отсюда пытаемся выбрать БД
     if(mysql_select_db(MySQL,pChar(MyDB))<>0)then Fail else Memo1.Lines.Add('Connected to '+MyDB+' has successful.');

     // здесь пытаемся в выбраной БД создать таблицу
//   if(mysql_query(MySQL,pChar('CREATE TABLE PROVERKA (id SMALLINT (3) ZEROFILL NOT NULL AUTO_INCREMENT, string CHAR (16) NOT NULL, value TINYINT UNSIGNED DEFAULT 1 NULL, PRIMARY KEY (id), INDEX (string))'))<>0)then Fail;
     finally // если всё прошло гладко - закрываем соединение с серваком
      mysql_close(MySQL);
     end;

   // сохраняем накопившуюся инфу в файл
    Memo1.Lines.SaveToFile('mysql.log');
    label3.Caption:='Серверу MySQL доступен и готов к работе.';
    button1.Enabled:=true;
  except // при неудаче - записать ошибку в лог
    Memo1.Lines.Add(Exception(ExceptObject).Message);
    label3.Caption:='Серверу MySQL недоступен.';
    button1.Enabled:=false;
  end;

  Screen.Cursor:=crDefault;
  application.ProcessMessages;
  sleep(2000);
  panel1.Visible:=false;  // подобие окна с сообщениями: НАД всеми компонентами формы ложу панель, крываю её
                                      // но при необходимости вывести сообщение - делаю видимой, заменив текст label'а, лежащего на панели
                                      // т.к. сама панель не имеет свойства WordWrap и вывести надпись в несколько строк можно лишь перерисовывая канву.
end;

в общем и целом, такая вот катавасия.
;)

Автор: fidres 1.10.2007, 16:10
кстати.
http://forum.vingrad.ru/forum/topic-134547/unread-1/anchor-entry1272485/0.html

(не согласен, но оставлю. там речь не о пятом мускуле как таковом, но о траблах связанных с его использованием с компонентами dbExp из седьмой дэлфы. тогда уж надо было пояснить, что это ссылка на тему "MySQL + Delphi7")

Автор: Rodman 22.10.2007, 09:10
http://www.crlab.com/dbx

Автор: Coder 26.2.2008, 13:21
Цитата(fidres @  17.9.2007,  19:19 Найти цитируемый пост)
то бишь, вся загвоздка заключается в правильном понимании кода - что и куда надо писать!


В свое время, все мои непонимания развеял раздел "APIs and Libraries" из официального мануала, который шел вместе с  MySQL 5.
Если кто-то не читал, советую.

Найти можно по этой ссылке: http://dev.mysql.com/doc/refman/5.0/en/apis.html

Автор: rnycop 14.8.2008, 10:16
Вопрос по теме)

Куда нужно кидать файл кроме win/system32?
Как перезаписать его, если у меня выдает, что файл занят другим приложением, хотя MySql сервер выкл?

Автор: Rodman 14.8.2008, 21:13
Цитата(rnycop @  14.8.2008,  10:16 Найти цитируемый пост)
уда нужно кидать файл кроме win/system32?

у TSQLConnection есть свойство VendorLib в котором по умолчанию написано libmysql.dll, я записал эту библиотеку в папку C:\Program Files\Borland\Delphi7\Lib\ и поменял свойтсво VendorLib на C:\Program Files\Borland\Delphi7\Lib\libmysql.dll


Цитата(rnycop @  14.8.2008,  10:16 Найти цитируемый пост)
Как перезаписать его, если у меня выдает, что файл занят другим приложением, хотя MySql сервер выкл? 

ну кто то ее держит... под безопасным загрузись или под ДОСом...

Автор: СЭНСЭЙ 31.1.2009, 19:00
Все работает просто супер!!!!!
Спасибо огромное!!!
Использую 5ю версию делфи и 5й мухель.
Даже не думал что все так просто окажется.

Есть ли у кого либа и пас к 4му Мухелю (версия 4.1.24) ?
Плиз выложите здесь или пришлите на ящик [email protected]

Автор: Akella 1.2.2009, 01:43
Цитата(СЭНСЭЙ @  31.1.2009,  19:00 Найти цитируемый пост)
Есть ли у кого либа и пас к 4му Мухелю (версия 4.1.24) ?

по-моему эта библиотека в самом первом сообщении

Автор: СЭНСЭЙ 1.2.2009, 09:46
А пас файл?

Автор: Akella 1.2.2009, 11:55
Может лучше через компоненты доступа, чем "через пас"?

Добавлено через 1 минуту и 49 секунд
Цитата(СЭНСЭЙ @  31.1.2009,  19:00 Найти цитируемый пост)
Есть ли у кого либа и пас к 4му Мухелю

я уверен, что у гугла есть smile  smile 

Автор: BlackBrother 1.5.2009, 17:48
люди объясните пожалуйста поточнее что и куда надо кидать для delphi7 mySQL5 чтобы заработало? 

скачал 
libmySQL.dll для 5 версии кинул в c:\Program Files\Borland\Delphi7\Lib
в папку с программой 
в system32


при запуске ругается: "Unable to load libmySQL.dll"

vendor тоже менял 

при запуске ругается: "Unable to load c:\Program Files\Borland\Delphi7\Lib\libmySQL.dll"

спасибо!

Автор: Akella 3.5.2009, 14:57
Цитата(BlackBrother @  1.5.2009,  17:48 Найти цитируемый пост)
при запуске ругается

а ты её поругай, что тут поделаешь

Добавлено через 47 секунд
или его

Добавлено через 3 минуты и 55 секунд
Погоди немного, щас телепаты появятся и отгадают что там и как делаешь, а что или кто ругается smile 

Автор: Rodman 3.5.2009, 16:01
Версия библиотеки может не подходить...
попробуй еще какую нить

Автор: BlackBrother 8.5.2009, 12:27
Цитата(Akella @ 3.5.2009,  14:57)
Цитата(BlackBrother @  1.5.2009,  17:48 Найти цитируемый пост)
при запуске ругается

а ты её поругай, что тут поделаешь

Добавлено @ 14:57
или его

Добавлено @ 15:01
Погоди немного, щас телепаты появятся и отгадают что там и как делаешь, а что или кто ругается smile

о... и тут есть форумные тролли )) 

если незнаешь, что ответить лучше помолчи. 

если по делу, то кидаю libmysql.dll в папку win\system32 в папку с прогой которую пишу в папку bin и в папку lib и еще указываю  в VendorLib  где лежит собственно libmysql.dll 

если ставлю в TSQLConnection true т.е конекчусь к базе выдает такое сообщение  "Unable to load c:\Program Files\Borland\Delphi7\Lib\libmySQL.dll"

Автор: Akella 8.5.2009, 13:10
BlackBrother, троль это ты, т.к. "такими" вопросами умеешь только форумы засорять.

Автор: BlackBrother 8.5.2009, 13:20
Цитата(Akella @ 8.5.2009,  13:10)
BlackBrother, троль это ты, т.к. "такими" вопросами умеешь только форумы засорять.

посмотри на все свои ответы в этой ветке и делай выводы... и не кипятись

Автор: Akella 8.5.2009, 13:56
BlackBrother, разочарую тебя - тролли есть везде smile 

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

А сообщение вроде "пробовал всё - ничего не помогает"... это по-ламерски как-то, ПМСМ.

Может быть тебе давно бы уже помогли, если бы описал проблему по-человечески.

Это раз.

Вот два>>> ты в гугле был? Что там тебе сказали? Не был? Так сходи.

Так что советую. 
1. Полистай гугл.
Если не поможет, то
2.Создай новую тему и там опиши нормально, что делал, что куда и как подключал. Версии мускула, библиотеки, компоненты доступа.

Вот так вот. smile 

P.S. советую со своего компьютера найти и удалить ВСЕ libmysql.dll и начать эксперименты заново.

Автор: BlackBrother 8.5.2009, 14:22
Цитата(Akella @ 8.5.2009,  13:56)
BlackBrother, разочарую тебя - тролли есть везде smile 

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

А сообщение вроде "пробовал всё - ничего не помогает"... это по-ламерски как-то, ПМСМ.

Может быть тебе давно бы уже помогли, если бы описал проблему по-человечески.

Это раз.

Вот два>>> ты в гугле был? Что там тебе сказали? Не был? Так сходи.

Так что советую. 
1. Полистай гугл.
Если не поможет, то
2.Создай новую тему и там опиши нормально, что делал, что куда и как подключал. Версии мускула, библиотеки, компоненты доступа.

Вот так вот. smile 

P.S. советую со своего компьютера найти и удалить ВСЕ libmysql.dll и начать эксперименты заново.

Чувак не кипятись... )) я не обзываюсь... не хотел тебя обидеть просто хотел помощи и все ... 

А сообщение вроде "пробовал всё - ничего не помогает"...  я такого не говорил 

1. описываю по человечески:

есть стол стул монитор системный блок клавиатура мышь WindowsXP Delphi 7 есть Mysql 5 и база данных соответственно 
использую стандартный компонент подключения к mysql TSQLConnection 
библиотеку взял с поста Rodman MySQL5.zip 671,45 Kb
Другой прогрммой только php все работет

проблема в том что при подключении TSQLConnection к базе выдет сообщение "Unable to load c:\Program Files\Borland\Delphi7\Lib\libmySQL.dll"  

2. Конечно я первым делом гулить стал. в том числе попал сюда и вижу, что сдесь многим помогли. И ненадо грубить.

последне верно надо попробывать...

ладно спасибо! 

Автор: Akella 8.5.2009, 15:50
Цитата(BlackBrother @  8.5.2009,  14:22 Найти цитируемый пост)
Чувак не кипятись... )) я не обзываюсь... не хотел тебя обидеть просто хотел помощи и все ... 

 smile я абсолютно спокоен smile

Добавлено через 10 минут и 50 секунд
Цитата(BlackBrother @  8.5.2009,  14:22 Найти цитируемый пост)
А сообщение вроде "пробовал всё - ничего не помогает"...  я такого не говорил 

не это не к тебе относится, просто на форумах похожих сообщений достаточно, и ты не первый, кто просит помощи и не полно описывает проблему, вот и всё.


Цитата(BlackBrother @  8.5.2009,  14:22 Найти цитируемый пост)
1. описываю по человечески:

Версия библиотеки какая? Ты уверен, что она для 5-го мускула и может работать с dbExpress? 

Попробуй установить альтернативные компоненты: ZeosDBO, AnyDac 1.х

А здесь был?
http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=7632

почитай последнее сообщение
http://forum.codenet.ru/showthread.php?t=15281&page=2

посмотри, где лежат библиотечки dbExpress для других СУБД, туда и положи библиотеку для мкскула, возможно, что это шде-то в дельфийской папке.



Цитата(BlackBrother @  8.5.2009,  14:22 Найти цитируемый пост)
И ненадо грубить.

И не думал!

Добавлено через 13 минут и 39 секунд
а здесь был?
http://www.sql.ru/forum/actualthread.aspx?tid=135592

Добавлено через 14 минут и 16 секунд
а здесь?
http://www.sql.ru/forum/actualthread.aspx?tid=35649

Автор: Akella 8.5.2009, 16:05
а здесь?
http://forum.vingrad.ru/forum/topic-134547/anchor-entry1037848/0.html

Автор: BlackBrother 8.5.2009, 16:25
Цитата

Попробуй установить альтернативные компоненты: ZeosDBO, AnyDac 1.х


вот вот к этому компоненту (ZeosDBO) уже склоняюсь попробую спасибо! 
просто думал можно стандартными средствами delphi решить проблему... smile

Цитата

посмотри, где лежат библиотечки dbExpress для других СУБД, туда и положи библиотеку для мкскула, возможно, что это шде-то в дельфийской папке.


ок буду пробывать!

спасибо!

Автор: Dmi3ev 13.5.2009, 01:00
Цитата

просто думал можно стандартными средствами delphi решить проблему...

пытался решить такую же проблему с С++ Билдер
1) пытался кидать в папку с проектом, в систем32, в... короче во все, которые в Билдере видны, ничего не вышло
2) качал библиотеки разные, не помогло (сначала пробовал рабочую, не помгло тоже)
3) пробовал переименовывать файлы, подключать ее с помощью инклуд, тольку никакого
3) бросил работать через dbExpress, выбрал АДО (вот собственно подключение, обрати внимание на кодировку, потому как я с нею возился, не мог понять в чем дело)
http://forum.vingrad.ru/forum/topic-256309/30.html
4) пробовал компоненты MyDAC, вот это ваще классная штука, только платная((( 
5) ZeosDBO тоже должны работать нормально, друган брал их (сам не пробовал)
Да и АДО ничего, нормально будет, если неохота качать и устанавливать, то юзай АДО...

Автор: Akella 13.5.2009, 11:49
Цитата(Dmi3ev @  13.5.2009,  01:00 Найти цитируемый пост)
4) пробовал компоненты MyDAC, вот это ваще классная штука, только платная((( 

версия 1.х бесплатная

Добавлено через 23 секунды
Цитата(Dmi3ev @  13.5.2009,  01:00 Найти цитируемый пост)
5) ZeosDBO тоже должны работать нормально, друган брал их (сам не пробовал)

мало документации и примеров, тем более на русском

Добавлено через 1 минуту и 28 секунд
Цитата(Dmi3ev @  13.5.2009,  01:00 Найти цитируемый пост)
Да и АДО ничего, нормально будет, если неохота качать и устанавливать, то юзай АДО...

Требуется ODBC драйверы, я так и не смог нормально связать ADO+MySQL, видать опыта маловато.

Автор: fidres 19.5.2009, 15:50
не, ну я тащусь зелёный как ты ныряешь!
"там искал, тут искал..."
лично я раз 15 уже объяснял, что компоненты dbExp входящие в комплект поставки среды разработки под название Delphi7 - ПРОСТО ФИЗИЧЕСКИ НЕ МОГУТ РАБОТАТЬ С ЛИБОЙ ИЗ MySQL5!!!
ребята!
где вы видели разработки 2002 года выпуска, поддерживающие софт 2006-го года выпуска???
да таких просто нет!
программисты, разрабатывающие в 2002 году седьмую дэлфу - просто не подозревали, что в 2006-ом выйдет MySQL, который должен будет коннектица с их компонентами!!!
в то же время, разрабы мускуля - не очень-то и задумывались над возможностью использовать их продукт совместно с дэлфой (ну не та задача у них стояла!).......
так вот скажите мне, старому балвану, как можно link:http://forum.vingrad.ru/forum/topic-134547/unread-1/anchor-entry1272485/0.html?!

Автор: eldar22 31.5.2009, 01:33
Здравствуйте
Вопрос в тему 
Я скачал libmysql.dll НО вот такая ошибка

[Error] Unit1.pas(47): Undeclared identifier: 'CRLF'

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,mysql, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var MySQL: PMYSQL;
   MyHost: string;
   MyPort: integer;
   MyUser: string;
   MyPass: string;
     MyDB: string;
   MyTime: longword;
   MyComp: integer;
        k: integer;
       F4: TextFile;
      buf: string[128];
     label u240;
 procedure Fail(Msg: string = '');
   begin
    // mysql_errno, mysql_error
     if(Msg='')then Msg:=Format('%d - %s',[mysql_errno(MySQL),mysql_error(MySQL)]);
     raise Exception.Create(CRLF+CRLF+'Fatal Error'+CRLF+'==========='+CRLF+Msg);
   end;
 procedure Versions;
   begin
     Memo1.Lines.Add(CRLF);
     Memo1.Lines.Add('Versions');
     Memo1.Lines.Add('========');
    // mysql_get_server_info
     Memo1.Lines.Add('Server: '+mysql_get_server_info(MySQL));
    // mysql_get_client_info
     Memo1.Lines.Add('Client: '+mysql_get_client_info);
    // mysql_get_proto_info
     Memo1.Lines.Add('Protocol: '+intToStr(mysql_get_proto_info(MySQL)));
   end;
 procedure Statistics;
  var Stats: string;
          P: integer;
   begin
     Memo1.Lines.Add(CRLF);
     Memo1.Lines.Add('Statistics');
     Memo1.Lines.Add('==========');
    // mysql_stat
     Stats:=mysql_stat(MySQL);
     P:=pos('  ',Stats);
    while P>0 do begin
      Memo1.Lines.Add(copy(Stats,1,P-1));
      Stats:=copy(Stats,P+2,MaxInt);
      P:=pos('  ',Stats);
    end;
     Memo1.Lines.Add(Stats);
   end;
begin
  SetForegroundWindow(Handle);
  Screen.Cursor:=crHourGlass;
  label1.Caption:='Подождите, выполняется попытка подключения к серверу MySQL';

  application.ProcessMessages;
 for k:=0 to progressbar1.Max do
  begin
    progressbar1.Position:=k;
    sleep(10);
  end;
u240:
   AssignFile(F4,'myset.ini');
  {$I-}
   Reset(F4); // открытие на чтение
  {$I+}
 if(IOResult<>0)then
  begin
    Button1.OnClick(nil); // здесь у меня при исключении создаётся необходимый файл с данными
    goto u240;
   end;
 try
   readln(F4,buf);   // domain
   readln(F4,buf);   // servname
   MyHost:=buf;
   readln(F4,buf);   // port
   MyPort:=StrToInt(buf);
   readln(F4,buf);   // login
   MyUser:=buf;
   readln(F4,buf);   // pass
   MyPass:=buf;
   readln(F4,buf);   // db
   MyDB:=buf;
   readln(F4,buf);   // db_pass
//   Result:=1;
 except
//   Result:=0;
 end;
   Closefile(F4);
  MyTime:=30;      // strToIntDef(EditTime.Text, 30); - оригиналбное значение
  MyComp:=120;  // integer(CheckComp.Checked) * CLIENT_COMPRESS; - оригиналбное значение
  // но так как я предпологаю использовать это всё в локалке - то таких значений достаточно
  // хотя всё это тоже можно вводить ручками при попытке подключения (см. примеры)
 try // попробовать произвести открытие соединения с серваком и записать отчёт в фал
    try // инициируем соединение
      MySQL:=mysql_init(nil);
     // если отсутствует - выводим сообщуху в лог
     if(MySQL=nil)then Fail('Couldn''t init PMYSQL object');
     // попробовать обойтись без установки таймаута? тогда при отключеном серваке возможно придёца снимать задачу аварийно...
     if(mysql_options(MySQL,MYSQL_OPT_CONNECT_TIMEOUT,@MyTime)<>0)then Fail;
     // пробуем соединиться с серваком с параметрами учётки, если не выходит - сообщуха в лог
     if(mysql_real_connect(MySQL,pChar(MyHost),pChar(MyUser),pChar(MyPass),nil,MyPort,nil,MyComp)=nil)then Fail;
     // выводим в лог инфу о серваке
      Memo1.Lines.Add('Connected to MySQL server at '+mysql_get_host_info(MySQL));
     // запрашиваем версии клиента и сервака и помещаем эту инфу в лог
      Versions;
     // запрашиваем некоторую статистику о серваке и так же выводим её в лог
      Statistics;
     // отсюда пытаемся выбрать БД
     if(mysql_select_db(MySQL,pChar(MyDB))<>0)then Fail else Memo1.Lines.Add('Connected to '+MyDB+' has successful.');
     // здесь пытаемся в выбраной БД создать таблицу
//   if(mysql_query(MySQL,pChar('CREATE TABLE PROVERKA (id SMALLINT (3) ZEROFILL NOT NULL AUTO_INCREMENT, string CHAR (16) NOT NULL, value TINYINT UNSIGNED DEFAULT 1 NULL, PRIMARY KEY (id), INDEX (string))'))<>0)then Fail;
     finally // если всё прошло гладко - закрываем соединение с серваком
      mysql_close(MySQL);
     end;
   // сохраняем накопившуюся инфу в файл
    Memo1.Lines.SaveToFile('mysql.log');
    label1.Caption:='Серверу MySQL доступен и готов к работе.';
    button1.Enabled:=true;
  except // при неудаче - записать ошибку в лог
    Memo1.Lines.Add(Exception(ExceptObject).Message);
    label1.Caption:='Серверу MySQL недоступен.';
    button1.Enabled:=false;
  end;
  Screen.Cursor:=crDefault;
  application.ProcessMessages;
  sleep(2000);
   // подобие окна с сообщениями: НАД всеми компонентами формы ложу панель, крываю её
                                      // но при необходимости вывести сообщение - делаю видимой, заменив текст label'а, лежащего на панели
                                      // т.к. сама панель не имеет свойства WordWrap и вывести надпись в несколько строк можно лишь перерисовывая канву.
end;
end.






Автор: Akella 31.5.2009, 10:03
eldar22, тебе же компилятор ясно написал, что НЕ ЗНАЕТ он про CRLF. Вот к чему привод сдирание примеров. А если бы сам написал smile

Добавлено через 46 секунд
Вместо CRLF напиши #13

Автор: Romikgy 9.6.2009, 15:46
а мне понравился этот компанентик для работы с мусклем
http://sourceforge.net/project/downloading.php?groupname=directsql&filename=DirectMysqlObjects.zip&use_mirror=sunet
тем что не требует длл никаких ))

PS имхо 

Автор: nucleus666 29.1.2010, 13:17
а как с RAD studio 2010 ? 
залил в папку с прогой libmysql.dll - delphi 7 видит и пашет

залил в папку с прогой, system32, в bin от Рад студио  libmysql.dll - везде не может её найти

Автор: Akella 29.1.2010, 13:42
Может не та версия?

Добавлено через 2 минуты и 14 секунд
Что значит не видит? Неужели нельзя более подробно описать проблему?

Автор: nucleus666 29.1.2010, 13:47
cannot load libmysql library - если не та версия, то почему delphi 7 работает с ней?) подключился и отобразил табличку которую попросили)

Автор: Romikgy 29.1.2010, 13:57
Цитата(nucleus666 @  29.1.2010,  12:47 Найти цитируемый пост)
cannot load libmysql library

в папку с ехе кинь либу,
и учти что рад юникодный

Автор: Akella 29.1.2010, 14:36
Цитата(nucleus666 @  29.1.2010,  13:47 Найти цитируемый пост)
cannot load libmysql library 

а если перевести ;), то "не могу загрузить библиотеку"

Автор: nucleus666 29.1.2010, 14:52
Romikgy,в  папку с прогой я закинул - не помогает, а делфи 7 работает норм так

ну кодировка в mysql стоит ср1251


Akella, вот именно, он не знает где он, не может загрузить


поставил на другой ноут Rad 09 .....законектилось через SQLConnection1......но SimpleDataSet1 таблицы не отображает, не соединяется (в делфи 7 он сразу в свойствах показал таблицу из мускула, после запроса select * from бла бла бла отображает в DBgrid) ругался на библиотеку dbxmys.dll - заменил,взяв из рад 2010.....перестал соединяться   SQLConnection


Автор: Akella 29.1.2010, 15:54
Цитата(nucleus666 @  29.1.2010,  14:52 Найти цитируемый пост)
Akella, вот именно, он не знает где он, не может загрузить

а мне кажется, что знает, но не может загрузить

Добавлено через 1 минуту и 4 секунды
А если взять  и выполнить поиск библиотеки полностью на всё компьютере. Все найденные экземпляры удалить. Какую ошибку выдаст?

Автор: nucleus666 29.1.2010, 15:56
Akella, ну а если ты прав, то как решить проблему можно?)

Автор: Akella 29.1.2010, 15:56
Цитата(nucleus666 @  29.1.2010,  14:52 Найти цитируемый пост)
ну кодировка в mysql стоит ср1251

при чём здесь кодировка mssql?

Добавлено через 30 секунд
Цитата(nucleus666 @  29.1.2010,  15:56 Найти цитируемый пост)
Akella, ну а если ты прав, то как решить проблему можно?) 

не знаю, я не телепат

Автор: nucleus666 29.1.2010, 17:32
ну а какие могут быть варианты?)
п.с. старшие версии libmysql подходят вместо предыдущих?

Автор: nucleus666 3.2.2010, 22:08
veniomin, качаешь мускл с офф сайта, там будет в комплекте где-то эта библиотека, залил её копии в папку с проектом сохраненным,систем32, бин делфы.....ну и прописал зампуск делфы с правами админа + в КИСе добавил в доверенные, отрубил защитник виндовс - пашет нормально 

Автор: fidres 20.3.2010, 06:58
 smile 
новая игрушка появилась у людей, гляжу.
rad2010...

на всякий случай, чтоб исключить недопонимание переменной среды 'PATH' и подобных
Код
cls
@echo off
@echo ALLUSERSPROFILE       : %ALLUSERSPROFILE%>all.dat
@echo CommonProgramFiles    : %CommonProgramFiles%>>all.dat
@echo COMPUTERNAME          : %COMPUTERNAME%>>all.dat
@echo ComSpec               : %ComSpec%>>all.dat
@echo FP_NO_HOST_CHECK      : %FP_NO_HOST_CHECK%>>all.dat
@echo NUMBER_OF_PROCESSORS  : %NUMBER_OF_PROCESSORS%>>all.dat
@echo OS                    : %OS%>>all.dat
@echo Path                  : %Path%>>all.dat
@echo PATHEXT               : %PATHEXT%>>all.dat
@echo PROCESSOR_ARCHITECTURE: %PROCESSOR_ARCHITECTURE%>>all.dat
@echo PROCESSOR_IDENTIFIER  : %PROCESSOR_IDENTIFIER%>>all.dat
@echo PROCESSOR_LEVEL       : %PROCESSOR_LEVEL%>>all.dat
@echo PROCESSOR_REVISION    : %PROCESSOR_REVISION%>>all.dat
@echo ProgramFiles          : %ProgramFiles%>>all.dat
@echo SystemDrive           : %SystemDrive%>>all.dat
@echo SystemRoot            : %SystemRoot%>>all.dat
@echo TEMP                  : %TEMP%>>all.dat
@echo TMP                   : %TMP%>>all.dat
@echo USERDOMAIN            : %USERDOMAIN%>>all.dat
@echo USERNAME              : %USERNAME%>>all.dat
@echo USERPROFILE           : %USERPROFILE%>>all.dat
@echo windir                : %windir%>>all.dat
@echo APPDATA               : %APPDATA%>>all.dat
@echo HOMEDRIVE             : %HOMEDRIVE%>>all.dat
@echo HOMEPATH              : %HOMEPATH%>>all.dat
@echo LOGONSERVER           : %LOGONSERVER%>>all.dat
@echo PROMPT                : %PROMPT%>>all.dat
@echo SESSIONNAME           : %SESSIONNAME%>>all.dat
всяко в жизни бывает... вдруг там нет %WinDir%\System32... или дэлфа перехватывает управление и не даёт определиться с системными путями...
(я обычно складывал все нужные файло в папку проекта)
 smile 

кстати, ставил 'колёса2009'... безумное количество новшеств, которое, честно признаюсь, пугает!
пришлось ставить на виртуальник старую-добрую семёрку (т.к. d2005 - тоже _уже не в контексте_ старого интерфейса) и на ней выкручиваться...
давненько не брал я в руки шашек (в смысле, не кодил)... уже подзабыл всё порядком.
а тут ещё и задача _не стандартная_ (во всяком случае для меня, привыкшего решать проблемы БЕЗ использования средств программирования от M$  smile ) - занимаюсь нынче изыманием/запихиванием данных из/в access-базы...
жуть!
 smile 

есть добрые люди?
подмогните!
дайте содержательный линк на описаловку работы с базами access от мелких?..

Автор: GrishaDm 19.6.2010, 02:18
Который день не могу "победить" MySQL. Сам он работает, а с PHP не хочет. При раскомментировании в php.ini строчки 
;extension=php_mysql.dll
после перезагрузки Apache, вэбсервер просто вылетает.user posted image  Пожалуйста дайте, если можете, нормальную версию файла php_mysql.dll и подскажите куда же всё-таки её копировать - в ext или в C:\Windows\system32? Версии Apache 2.2.15, PHP 5.2.13, MySQL 5.0.67.

Автор: Rodman 19.6.2010, 07:49
GrishaDm, тут рассматривают немного другую библиотеку...

Автор: fidres 13.7.2010, 04:22
Цитата(GrishaDm @ 19.6.2010,  02:18)
Который день не могу "победить" MySQL. Сам он работает, а с PHP не хочет. При раскомментировании в php.ini строчки 
;extension=php_mysql.dll
после перезагрузки Apache, вэбсервер просто вылетает.
extension=php_mysql.dll - т.е. у тебя проблема с расширением пхп, а не с мускулем или апачем. и тупое перекопирование в любую из системных папок - тут не решит проблему.
ищи в гугле/янде вопросы и ответы о проблематике связки мускуля с пхп под твоим апачем (возможно и под другими апачами).
уверен - это уже обсуждалось и не раз. но на специализированных форумах, а не на форумах посвящённых проблемам связки дэлфы и мускуля.

Автор: a.benz 27.2.2011, 21:56
На основе этого урока http://www.delphiexpert.ru/view_lesson.php?id=76 пытаюсь подключиться к БД.
В Rad Studio XE вот че выдает
http://s1.ipicture.ru/
Пробывал класть во все места какие тока можно библиотеку libmysql.dll (библиотеку пробывал с разных сайтов) 

Автор: fidres 10.3.2011, 12:55
a.benz, объясню на пальцах (хотя, тебе и так всё уже было сказано в предупреждении твоей ХЕ):
1. ставим и разворачиваем MySQL сервак. (в состав которого входит libmysql.dll)
2. ставим и разворачиваем среду программирования. (не важно по сути какую! в которой содержатся компоненты для работы с базами данных MySQL и прочих)

получаем:
-основную библиотеку MySQL-сервака libmysql.dll, с хранящимися в ней функциями обработки и управления данными.
-некое количество компонентов, содержащих код обращения к функциям libmysql.dll (определённой версии!!!)
(если версия libmysql.dll хоть немного отличается от той версии, которая была предусмотренна разрабами твоей среды разработки - засунь хоть во все папки эту либу - хрен чё получится!)

смысл вот в чём.
допустим, libmysql.dll содержит функцию .CreateDB(Database) (где Database - имя создаваемой базы).
компонент, который ты кладёшь на форму при разработке своей проги - знает о том, что функцие .CreateDB - необходимо передать параметр Database (потому, что разрабы твоей среды разработки - ЗНАЛИ, ЧТО СОДЕРЖИТСЯ в libmysql.dll такой-то версии и предусмотрели, при написании кода своего компонента - этот ньюанс!)
но, к примеру, была выпущена новая версия мускуля, в котором в библиотеке libmysql.dll функция .CreateDB уже не содержит обязательного параметра Database!
а компонент твоей среды разработки - упорно пытается передавать этот параметр в функцию, при обращении к libmysql.dll!
возникает исключение... выдаётся ошибка.
и так же происходит, если компонент - более новый, а либа - устаревшая.
нельзя впихать невпихуемое!!!
чтобы всё работало гладко - необходимо собрать воедино компоненты и билию - примерно одного времени создания!
которые, с большей вероятностью, использовали разрабы того или иного (мускуля или дэльфы/сишки и пр.)

Автор: drkot 23.5.2011, 12:47
Версия: 5.1.45
поддерживает потоки и STMT

Автор: fidres 8.6.2011, 05:42
-----------------------------------------------------------------------

Автор: Akella 8.6.2011, 15:19
fidres, а при чём здесь drkot?  smile Это что, его либа?

Автор: fidres 9.6.2011, 05:07
-----------------------------------------------------------------------

Автор: Akella 9.6.2011, 09:06
fidres, обращайся к разработчику, что ты пристал к нему. Человек выложил новую версию DLL, а ты ещё недоволен. Не нравится - не ешь  smile 

Автор: fidres 12.6.2011, 09:59
-----------------------------------------------------------------------

Автор: Akella 13.6.2011, 13:01
Цитата(fidres @  12.6.2011,  09:59 Найти цитируемый пост)
странная логика.
я вполне спокойно могу поставить/обновить мускуль.
вполне приспокойно могу взять оттуда библию новой версии...
самостоятельно.

да, странная логика, но только у тебя  smile 

Я открою тебе страшную тайну, крепись - ты НЕ единственный программист на нашей планете ;)

Добавлено через 1 минуту и 30 секунд
Если ты не понял, что скорее всего так и есть, то поясняю: зачем мне ставить весь мускуль, когда мне нужно только одна эта библиотека???
И вообще, хорош флудить. Щас придёт модератор этого раздела и всем даст по попе.

Автор: fidres 18.6.2011, 02:16
-----------------------------------------------------------------------

Автор: Akella 18.6.2011, 11:54
Цитата(fidres @  18.6.2011,  02:16 Найти цитируемый пост)
и что я должен сделать с этой библиотекой, если у меня нет ни малейшего понятия о её внутреннем содержании?

О Боже. Тебя заставляют её использовать? Суют паяльник куда-то? Извини я не знал.

Добавлено @ 11:56
Цитата(fidres @  18.6.2011,  02:16 Найти цитируемый пост)
что мне теперь сделать?


Цитата(fidres @  12.6.2011,  09:59 Найти цитируемый пост)
я вполне спокойно могу поставить/обновить мускуль.
вполне приспокойно могу взять оттуда библию новой версии...
самостоятельно.



 smile  smile  smile я тебя не понимаю.

ты просто потрындеть сюда пришёл? Хватит троллить!

Добавлено через 2 минуты и 43 секунды
Цитата(fidres @  18.6.2011,  02:16 Найти цитируемый пост)
будь бы он хорошим программистом - он бы дал детальное описание этой библиотеки, как сделал в своё время я.
правда ведь?

НЕТ!

Автор: megasports 18.7.2012, 23:10
Модератор: Сообщение скрыто.

Автор: uira 28.3.2013, 12:52
Для Rodman: спасибо за ссылку MYSQL5 - сразу заработала.
С ув.,Uira

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)