Поиск:

Ответ в темуСоздание новой темы Создание опроса
> libmySQL.dll - рабочая библиотека MySQL5, Подтверждается несколькими участниками 
:(
    Опции темы
Rodman
Дата 4.7.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Дароф. 

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

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

Для MySQL5

Присоединённый файл ( Кол-во скачиваний: 1495 )
Присоединённый файл  LIBMYSQL.ZIP 129,59 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
fidres
Дата 4.9.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



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

Это сообщение отредактировал(а) fidres - 4.9.2007, 15:01
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Rodman
Дата 4.9.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



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

ну так и выложи тут!!!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
fidres
Дата 8.9.2007, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



не могу.
даже архив весит 600 кило. а тут ограничение на загрузку 120 кило.
если хошь - могу мылом намылить.
кидай своё мне в личку.
архив содержит саму либу, файл-описание и плюс небольшой проектик для примера.
в MySQL.pas есть ограничение на количество выводимой инфы - 500 строк, 10 столбцов.
но можно поменять на желаемое количество (правда есть там дальше проверка на всё это дело - её тоже упорядочить нужно. хотя, можно прикинуть как ваще проверку с ограничением убрать.)
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Rodman
Дата 10.9.2007, 18:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



от fidres!!!

Присоединённый файл ( Кол-во скачиваний: 1603 )
Присоединённый файл  MySQL5.zip 671,45 Kb
PM MAIL WWW Skype GTalk YIM MSN   Вверх
fidres
  Дата 14.9.2007, 05:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



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

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

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

Присоединённый файл ( Кол-во скачиваний: 1022 )
Присоединённый файл  MySQL.7z 12,02 Kb
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
fidres
Дата 17.9.2007, 11:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



ну, в общем, хочу сказать вам следующее.
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;

в общем и целом, такая вот катавасия.
;)
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
fidres
Дата 1.10.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 15.11.2006

Репутация: 1
Всего: 1



кстати.
MySQL5

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

Это сообщение отредактировал(а) fidres - 2.10.2007, 07:50
--------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист.
PM ICQ   Вверх
Rodman
Дата 22.10.2007, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



PM MAIL WWW Skype GTalk YIM MSN   Вверх
Coder
Дата 26.2.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



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


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

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

Это сообщение отредактировал(а) Coder - 6.3.2008, 12:38
PM MAIL   Вверх
rnycop
Дата 14.8.2008, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 15.2.2006

Репутация: нет
Всего: нет



Вопрос по теме)

Куда нужно кидать файл кроме win/system32?
Как перезаписать его, если у меня выдает, что файл занят другим приложением, хотя MySql сервер выкл?
PM MAIL   Вверх
Rodman
Дата 14.8.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



Цитата(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 сервер выкл? 

ну кто то ее держит... под безопасным загрузись или под ДОСом...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
СЭНСЭЙ
Дата 31.1.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Все работает просто супер!!!!!
Спасибо огромное!!!
Использую 5ю версию делфи и 5й мухель.
Даже не думал что все так просто окажется.

Есть ли у кого либа и пас к 4му Мухелю (версия 4.1.24) ?
Плиз выложите здесь или пришлите на ящик [email protected]
PM MAIL   Вверх
Akella
Дата 1.2.2009, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



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

по-моему эта библиотека в самом первом сообщении
PM MAIL   Вверх
СЭНСЭЙ
Дата 1.2.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



А пас файл?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1774 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.