Autor Téma: ADOConnection  (Přečteno 6775 krát)

Offline pesto

  • Příspěvků: 3
  • Karma: 0
    • Verze Delphi: XE
ADOConnection
« kdy: 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 ?

Offline mjseven

  • Mladík
  • **
  • Příspěvků: 64
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:ADOConnection
« Odpověď #1 kdy: 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/[/size]

Offline pesto

  • Příspěvků: 3
  • Karma: 0
    • Verze Delphi: XE
Re:ADOConnection
« Odpověď #2 kdy: 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  :)
« Poslední změna: 01-07-2014, 16:23:49 od pesto »

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1762
  • Karma: 72
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:ADOConnection
« Odpověď #3 kdy: 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
Embarcadero MVP - Czech republic

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #4 kdy: 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

Offline sud

  • Příspěvků: 5
  • Karma: 0
    • Verze Delphi: 7,2010,xe3
Re:ADOConnection
« Odpověď #5 kdy: 01-07-2014, 22:04:51 »
Jak psal Radek musíš buď použít ODBC connection nebo můžeš použít ZeosDB

Offline Daniel_Andrascik

  • Hrdina
  • ****
  • Příspěvků: 420
  • Karma: 15
    • Verze Delphi: D2007, XE3
Re:ADOConnection
« Odpověď #6 kdy: 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.

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #7 kdy: 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
« Poslední změna: 02-07-2014, 09:11:17 od hlucheucho »

Offline pesto

  • Příspěvků: 3
  • Karma: 0
    • Verze Delphi: XE
Re:ADOConnection
« Odpověď #8 kdy: 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í ...

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #9 kdy: 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

Offline Daniel_Andrascik

  • Hrdina
  • ****
  • Příspěvků: 420
  • Karma: 15
    • Verze Delphi: D2007, XE3
Re:ADOConnection
« Odpověď #10 kdy: 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

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #11 kdy: 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

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1762
  • Karma: 72
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:ADOConnection
« Odpověď #12 kdy: 10-07-2014, 16:05:58 »
Ukaž ConnectionStrng.
Embarcadero MVP - Czech republic

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1839
  • Karma: 87
    • Verze Delphi: D2007, XE3, DX10
Re:ADOConnection
« Odpověď #13 kdy: 10-07-2014, 16:19:21 »
Kde je příčina?
Ma aplikace povoleny pristup k siti (port tusim 3306)?
V systemovych logach nic nepisou?

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #14 kdy: 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

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #15 kdy: 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

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1762
  • Karma: 72
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:ADOConnection
« Odpověď #16 kdy: 11-07-2014, 14:24:38 »
Nechybí ti nejaka knihovna nebo soubor? V takovych pripadech pouzivam http://technet.microsoft.com/en-us/sysinternals/bb896645 (Process Monitor), ten mi ukaze co za soubory to hleda a nenajde.
Embarcadero MVP - Czech republic

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #17 kdy: 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?

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 1762
  • Karma: 72
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:ADOConnection
« Odpověď #18 kdy: 11-07-2014, 20:48:30 »
Omezeni se netyka ADO.
Embarcadero MVP - Czech republic

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #19 kdy: 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

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #20 kdy: 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

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:ADOConnection
« Odpověď #21 kdy: 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

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):