Forum Delphi.cz

Databáze => MySQL => Téma založeno: pesto 01-07-2014, 13:15:10

Název: ADOConnection
Přispěvatel: pesto 01-07-2014, 13:15:10
Zdravím všechny Delphisty. Mám prosbičku o pomoc s připojením k MySQL z DelphiXE. Zkoušel jsem SQLConnection, ale nadává mi kvůli chybě DLL (dle různých diskuzí jsem zkoušel DLL kopírovat do BIN, SYSTEM32 i k EXE a nic). Tak jsem zkusil ADOConnection, průvodcem sestavil ConnectionString (Zprostředkovatel MS OLE DB Provider for SQL Server). Test spojení ovšem neproběhne, po nějaké delší době to píše chybu inicializace zprostředkovatele - Server neexistuje nebo byl odepřen přístup. Přitom už.jméno, heslo a server databáze mám OK, protože se např. přes DatAdmin bez problémů připojím. Poradíte někdo ?
Název: Re:ADOConnection
Přispěvatel: mjseven 01-07-2014, 14:27:42

Pokud se nepletu tak MS OLE DB Provider for SQL Server je určen pouze pro MS SQL server.

Pro MySQL budeš potřebovat ODBC driver pro MySQL.
Ke stažení by měl být zde: [size=78%]http://dev.mysql.com/downloads/connector/odbc/ (http://dev.mysql.com/downloads/connector/odbc/)[/size]
Název: Re:ADOConnection
Přispěvatel: pesto 01-07-2014, 16:19:55
Jo, díky moc, to by mohla být dobrá stopa. Po nainstalování, když dám "Build" na ConnectionString tak se mi ale žádný nový zprostředkovatel neobjeví ... měl by ? Nebo mám dát místo Provider=SQLOLEDB.1 "ručně" jiného ... jakého ? Ještě jednou díky za pomoc  :)
Název: Re:ADOConnection
Přispěvatel: Radek Červinka 01-07-2014, 19:05:11
Pokud pouzijes ODBC provider, tak musis jako provider vybrat ODBC a v nemvybrat pripojeni k MySQL. http://delphi.about.com/od/mysql/qt/mysqladoconn.htm (http://delphi.about.com/od/mysql/qt/mysqladoconn.htm)
Název: Re:ADOConnection
Přispěvatel: hlucheucho 01-07-2014, 21:53:22
DLL je někdy třeba přeregistrovat. Tento problém jsem měl s Midas.dll. Řešení najdeš na netu.

hu
Název: Re:ADOConnection
Přispěvatel: sud 01-07-2014, 22:04:51
Jak psal Radek musíš buď použít ODBC connection nebo můžeš použít ZeosDB
Název: Re:ADOConnection
Přispěvatel: Daniel_Andrascik 02-07-2014, 06:52:42
DLL sa registruju len ak su kontajnermi pre ActiveX prvky. Ale dll-ky pre MySQL pokial viem activex prvky neobsahuju. Kniznice libmysql**.dll urcite len distribuju subor funkcii. Takisto odporucam napriklad ZeosDB, UniDAC, FireDAC/AnyDAC s tymito kniznicami. Ma to tu hlavnu vyhodu ze ak tu dll-ku mas rovno pri exaci tak tu aplikaciu spustis i na uplne novo nainstalovanom windowse bez akychkolvek nutnych doplnkovych instalacii ODBC a akychkolvek inych nutnych nastavovaciek v systeme.
Název: Re:ADOConnection
Přispěvatel: hlucheucho 02-07-2014, 09:08:12
Bez midas.dll připojení DB pomocí dbExpress nechodí. Zrovna tato dll občas přeregistrování vyžaduje.

U některých verzí C++ Builderu (o Delphi platí asi totéž) je podporováno připojení jen k lokální a embedded DB.

K ADO: http://forum.delphi.cz/index.php?topic=9573.0;wap2  Podle tohoto postupu jsem to rozchodil během asi 20 minut. ODBC driver pro MySQL byl součástí jejího instal. balíku nebo ho získáš na stránkách MySQL.

hu
Název: Re:ADOConnection
Přispěvatel: pesto 02-07-2014, 16:50:06
Stále jsem nezvítězil  :'(
Mám nainstalovaný ODBC driver pro MySQL "mysql-connector-odbc-5.3.2-win32"
a ConnectionString je
DRIVER={MySQL ODBC 5.32 Driver}; SERVER=jmeno serveru; PORT=3306; DATABASE=jmeno databaze; USER=uživatel; PASSWORD=heslo; OPTION=3;
jakmile dám Connected na true, tak vyskočí chyba "Zprostředkovatel nebyl nalezen. Pravděpodobně není sptávně nainstalován"
Instalace ODBC driveru proběhla v pořádku.
Kde je chyba ? Nemusí se ODBC driver v Delphi ještě nějak registrovat ? Když spustím "Build" průvodce na sestavení ConnectionString, tak mi to ODBC pro MySQL mezi zprostředkovateli nenabízí ...
Název: Re:ADOConnection
Přispěvatel: hlucheucho 02-07-2014, 18:41:22
conection string se dá "naklikat" v Object Inspectoru. Pro první pokusy s připojením je to nejvhodnější postup.

hu
Název: Re:ADOConnection
Přispěvatel: Daniel_Andrascik 03-07-2014, 08:18:59
funkcnost ODBC si mozes vyskusat trebarz aj v exceli, nechaj si v nom otvorit nejaku tabulku z databazy. Zvycajne som si vzdy najprv takto skusal funkcnost ODBC drivrov a az potom som s nimi zacal "bojovat" v Delphi
Název: Re:ADOConnection
Přispěvatel: hlucheucho 10-07-2014, 15:48:25
Používám ADOConnection pro vzdálené připojení k MySQL. V počítači, kde mám C++ Builder, se moje aplikace ke vzdálené DB na jiném počítači připojí. Stejně funguje i Relase spouštěná dvojklikem na zástupce exe souboru. Zkusil jsem svou aplikaci přenést do jiného počítače. Vytvořil jsem stejný uživatelský zdroj dat (zdroje dat ODBC). Po kliku na Test v okně konfigurace zdroje dat bylo připojení úspěšné. Přesto se moje aplikace nepřipojí k DB, nevznikne žádná vyjímka. Pro ADOConnection používám na obou PC stejný ConnectionStrng. Kde je příčina?

hu
Název: Re:ADOConnection
Přispěvatel: Radek Červinka 10-07-2014, 16:05:58
Ukaž ConnectionStrng.
Název: Re:ADOConnection
Přispěvatel: pf1957 10-07-2014, 16:19:21
Kde je příčina?
Ma aplikace povoleny pristup k siti (port tusim 3306)?
V systemovych logach nic nepisou?
Název: Re:ADOConnection
Přispěvatel: hlucheucho 10-07-2014, 21:05:15
Potřebuje aplikace přístup k síti když používá ODBC? Myslím, že ne. Ani na jednom z počítačů samotná aplikace nemá vyjímku firewallu. Firewall na straně DB serveru by znemožnil samotné nastavení zdroje dat ODBC (vyzkoušeno). ConnectionString bych nerad publikoval. Jedině zaslat mailem.

hu
Název: Re:ADOConnection
Přispěvatel: hlucheucho 11-07-2014, 14:13:12
Ještě jsem s pomocí MS Excel úspěšně otestoval funkčnost zdroje dat - bez problémů jsem do Excelu načetl vybranou tabulku z MySQL. Zkoušel jsem i ConnectionString mít zadaný At Design Time abych vyloučil možnost chybného načtení z ini souboru - zcela bez efektu. Zajímavé je, že na počítači, kde je C++ builder, se aplikace připojí, ale na jiných počítačích se k DB nepřipojí a není to doprovázeno žádnou chybovou hláškou - takto netuším, co mám hledat.

hu
Název: Re:ADOConnection
Přispěvatel: Radek Červinka 11-07-2014, 14:24:38
Nechybí ti nejaka knihovna nebo soubor? V takovych pripadech pouzivam http://technet.microsoft.com/en-us/sysinternals/bb896645 (http://technet.microsoft.com/en-us/sysinternals/bb896645) (Process Monitor), ten mi ukaze co za soubory to hleda a nenajde.
Název: Re:ADOConnection
Přispěvatel: hlucheucho 11-07-2014, 16:25:40
Narazil jsem na tohle. Není to nějakej naschvál od Embarcadera? C++ builder XE5 Proffesional ed. má omezení jen na lokální nebo embedded DB. Souvisí to s tím?
Název: Re:ADOConnection
Přispěvatel: Radek Červinka 11-07-2014, 20:48:30
Omezeni se netyka ADO.
Název: Re:ADOConnection
Přispěvatel: hlucheucho 11-07-2014, 22:29:24
Na každou chybějící dll mi každá aplikace zkompilovaná v C++ Builderu vypisovala chybu s názvem chybějící dll. Zde vyžaduje dll s "nesmyslným" (možná i chybným) názvem bez chybového hlášení. Zkoušel jsem to na 4 počítačích:
1. počítač, na kterém byla aplikace zkompilována: aplikace běží normálně, k DB MySQL 5.6 jak lokální tak i ke vzdálené se připojí, nevyžaduje dll s nesmyslným názvem
2. počítač s MS Excel: přečtením tabulky ze vzdálené MySQL do MS Excel ověřena funkčnost datového zdroje. Aplikace se k DB nepřipojí
3. počítač s lokální DB MySQL starší verze: aplikace se k DB nepřipojí ani ke vzdálené ani k lokální. Vyžaduje dll s "nesmyslným" (možná i chybným) názvem
4. počítač se starší verzí IDE C++ Builder 2010 s lokální MySQL 5.6, ani zde se aplikace nepřipojí.
Ve všech případech OS Win XP Prof. ed.

Vyžaduje použití ADO nějaké specifické nastavení projektu oproti běžné aplikaci? (Tonoucí se stébla chytá)

hu
Název: Re:ADOConnection
Přispěvatel: hlucheucho 14-07-2014, 16:57:02
Zkoušel jsem do PC z bodu 4 nainstalovat XE6 trial. Aplikace na něm běží. Dále jsem zkusil "banální" aplikaci jen s ADOConnection, ADOQuery, DataSource a DBGridem. Na tlačítko načte data bez problémů i na jiném PC bez vývojového prostředí. Zkusil jsem původní projekt "naklikat" znovu a kód obsluhy událostí zkopírovat. Opět nepřipojí k DB. Chování aplikace je hodně podivný.
 Budu muset krůček po krůčku zkoušet, co je v kódu špatně. Že se každý krůček musí zkusit na jiném počítači, bude to časově náročný. :'(

hu
Název: Re:ADOConnection
Přispěvatel: hlucheucho 16-07-2014, 14:10:05
Na ADO jsem po této zkušenosti zanevřel. Podařilo se mi velice rychle rozchodit C API podle http://programujte.com/clanek/2009052300-zakladni-implementace-mysql-v-c-c/.  Jsou potřeba 3 kroky:
1. libmysql zkopírovat do adresáře kam C++ Builder vytvoří exe aplikace
2. použít    implib libmysql.lib libmysql.dll  , získanou libmysql.lib přidat do projektu
3. nastavit "include path" do adresáře kam MySQL instaloval hlavičkové soubory ( C:\Program Files\MySQL\MySQL Server 5.6\include )

Sice se to nedá "rychle naklikat", ale chodí to bez bádání.
hu