PDA

Visualizza la versione completa : [C/C++] Connettersi ad un DataBase MySql


ZoneForum
26-11-2003, 11:46
Come da titolo...
Come faccio?
Mi fate un esempio di script? Teoria non ci capisco granch...
Anche se esegue solo la connessione senza fare nessuna SELECT, INSERT etc.
Il PHP & MySql li conosco benissimo.

Grazie


:ciauz:

ZoneForum
26-11-2003, 17:38
:stordita:

Johnny_Depp
26-11-2003, 18:18
leggi:
http://forum.html.it/forum/showthread.php?s=&threadid=540241

ZoneForum
26-11-2003, 18:59
http://forum.html.it/forum/showthre...threadid=540241
Qui c' scritto solo come connettersi ad un Database Access!!
Io voglio connettermi a quello MySql :P

Johnny_Depp
26-11-2003, 19:15
gli esempi che ti ho postato, funzionano con qualsiasi database...
(il codice C/C++ per connettersi ad ACCESS o MySQL o ORACLE che ho utilizzato negli esempi, standard)

cambia solo il DSN che nel tuo caso, dovr puntare ad un database MySQL invece che ad un database Access.

P.S. altro discorso, se utilizzi Linux... (i miei esempi sono per sistemi windows)

ZoneForum
26-11-2003, 20:13
Puoi spiegarti meglio?
Sorry :ciauz:

Johnny_Depp
26-11-2003, 21:14
qua c' scritto come creare un DSN (che punta al database mysql)
http://forum.html.it/forum/showthread.php?s=&threadid=502964

per il resto... il codice commentato...

Che compilatore/ambiente/sistema stai utilizzando?

ZoneForum
26-11-2003, 22:18
Dev-Cpp (ultima versione; italiano)
Windows 2000 Professional Service Pack 3 (italiano)

ZoneForum
26-11-2003, 22:36
Installati i Drivers ODBC per MySql; creato il DSN, funziona!

Ora ecco il codice:

#import "c:\Programmi\File comuni\SYSTEM\ADO\msado15.dll" no_namespace rename("EOF","EndOfFile")

#include <iostream>
#include <cstdio>
using namespace std;

int main(int argc, char* argv[]){

// Inizializzo la libreria COM prima di utilizzare le sue funzioni.
CoInitialize(NULL);

// Costrutto 'try - catch' se si verifica un eccezione (exception) con 'catch' la "catturo"
try{

// Dichiaro un puntatore al recordset (utilizzando la tecnologia ADO)
_RecordsetPtr pRst("ADODB.Recordset");

// Stringa di connessione al database ACCESS
_bstr_t strCnn("Provider=MSDASQL; Data Source=prova; Database=test; User Id=; Password=; Security Info=True");

// Query SQL (seleziono tutto il recordset presente nella tabella)
pRst->Open("SELECT * FROM forum_members;", strCnn, adOpenStatic, adLockReadOnly, adCmdText);

// Muovo il puntatore al recordset sul primo record
pRst->MoveFirst();

// Itero fino alla fine del recordset (<-- totale dei record presenti nella tabella)
while (!pRst->EndOfFile) {

// Visualizzo a video il campo NOME
cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("nome")->GetValue())<<endl;

// Visualizzo a video il campo COGNOME
cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("cognome")->GetValue())<<endl;

// Visualizzo a video il campo TELEFONO
cout<<(char*) ((_bstr_t) pRst->GetFields()->GetItem("telefono")->GetValue())<<endl<<endl;

// Muovo il puntatore sul record successivo
pRst->MoveNext();

}

// Chiudo connessione al recordset
pRst->Close();

}

// Se si verifica un errore lo catturo
catch (_com_error &exception){

// ... E lo visualizzo a video (con tanto di descrizione)
cout<<"Errore: "<<(char*) exception.Description()<<endl;

}

// libero la memoria utilizzata da COM
CoUninitialize();

return(0);

}

Quando lo compilo mi d una serie di errori:

main.cpp:1:2: warning: #import is obsolete, use an #ifndef wrapper in the header file
main.cpp:1:59: warning: extra tokens at end of #import directive
In file included from main.cpp:1:
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\220' in program
In file included from main.cpp:1:
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1:4: warning: null character(s) ignored
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\3' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1:6: warning: null character(s) ignored
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\4' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1:10: warning: null character(s) ignored
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\377' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\377' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1:15: warning: null character(s) ignored
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\270' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1:18: warning: null character(s) ignored
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: parse error before `@' token
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1:26: warning: null character(s) ignored
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\340' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1:62: warning: null character(s) ignored
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\16' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\37' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\272' in program
c:/Programmi/File comuni/SYSTEM/ADO/msado15.dll:1: stray '\16' in program
Questi sono solo 1/500 di tutti gli errori :P

Ripeto che utilizzo Dev-C++ con Windows 2000 Professional Service Pack 3

In C:\Programmi\File comuni\SYSTEM\ADO la libreria msado15.dll esiste.

Cosa devo fare?


:ciauz:

pixer
27-11-2003, 09:27
Originariamente inviato da Johnny_Depp
cambia solo il DSN che nel tuo caso, dovr puntare ad un database MySQL invece che ad un database Access.MySQL ha una libreria propria per gestire le connessioni, ed preferibile usare quella.

libmysql/mysql++
http://www.mysql.com/downloads/api-mysql++.html

Loading