PDA

View Full Version : [C++] prima applicazione che si interfaccia a un database mysql, da dove inizio?


franklar
21-05-2009, 18:50
Come da oggetto.

Conosco discretamente mysql per averlo usato in applicazioni web (php, prevalentemente tramite un cms) ma non ho mai scritto un programma c++ che vi acceda e ci operi.

Prima cosa il software dovrà leggere una grossa mole di dati strutturati in un certo modo nel file system e dovrà popolare tabelle e campi che devo ancora definire.

La seconda funzione del programmino sarà quella di eseguire alcune query più o meno prefissate (l'utente non potrà scrivere direttamente la query, ma scegliere tra alcune opzioni di "ricerca" prestabilite inserendo soltanto una chiave). L'interfaccia sarà molto semplice, niente effetti speciali qui.

L'esame di sistemi informativi s'è fatto ormai vago nella mia memoria, ma ricordo che ci sono molteplici modi per usare sql in un applicativo. Siccome dalla teoria alla pratica c'è un mare chiedevo a voi quale potesse essere una buona strada... :stordita:

Inizialmente pensavo di usare il buon vecchio WxDevC++ (che conosco piuttosto bene) ma ho visto che la libreria ODBC è vecchia e non più mantenuta, e ora usa una certa libDebea che non ho idea di cosa sia e se sia conveniente provare a usarla rispetto al più noto Odbc.
Tocca provare Visual Studio Express?

RaouL_BennetH
21-05-2009, 19:23
Ciao :)

devi per forza farlo in C++ ?

RaouL.

franklar
21-05-2009, 20:01
Non ho vincoli sul linguaggio, ma lo preferirei più che altro perché è l'unico col quale ho realizzato progetti di una certa complessità, php a parte.

misterx
21-05-2009, 20:27
se ti può essere utile http://www.ucl.ac.uk/is/mysql/c/

fero86
21-05-2009, 20:28
niente ODBC, é molto meglio OLE DB:
http://msdn.microsoft.com/en-us/library/ms722784(VS.85).aspx
peró ti sconsiglio di usarlo in C++ se non hai ATL e ATL non é disponibile nel Windows SDK gratuito, dovresti avere un'edizione a pagamento di Visual Studio; peró forse ATL é ancora incluso nel vecchio Platform SDK.

franklar
30-05-2009, 15:18
Le ho provate tutte:

ODBC non funziona, l'origine dati è creata con successo ma Visual Studio non la vede.
Mysql++ produce errori di compilazione/linker sia su mingw (con devc++) che visualcpp
Connector C++ non ne parliamo

Sono giorni che ci sbatto la testa :muro:

Potrei iniziare a pensare di cambiare database...

vizzz
30-05-2009, 15:35
Potrei iniziare a pensare di cambiare database...

PostgreSQL e libpq...non sono proprio delle signore librerie le libpq, ma il loro dovere lo fanno.

franklar
30-05-2009, 17:59
PostgreSQL e libpq...non sono proprio delle signore librerie le libpq, ma il loro dovere lo fanno.

Pensavo più a qualcosa tipo sqlite, ma non so ancora se fa al caso mio (per via delle limitazioni che ha nell'implementazione di sql).


Stavo provando ad usare Visual Studio Express 2008 + Mysql Connector++ e mi sono bloccato su questo errore

c:\mysql5.1\include\mysql_com.h(417) : error C2065: 'SOCKET': identificatore non dichiarato
1>c:\mysql5.1\include\mysql_com.h(417) : error C2146: errore di sintassi: ')' mancante prima dell'identificatore 's'
1>c:\mysql5.1\include\mysql_com.h(418) : error C2059: errore di sintassi: ')'

La soluzione proposta qui (http://www.cplusplus.com/forum/windows/3224/) (scaricare e installare l'SDK) non ha sortito alcun effetto.

vizzz
31-05-2009, 10:14
il progetto ha il supporto socket?
non è che includi l'header di mysql prima di stdafx.h?

franklar
31-05-2009, 20:40
No, avevo messo mysql.h dopo stdfax.h

Comunque ho abbandonato Visual Studio perché lo trovo orrendo, non mi ci abituo proprio. Tornato al mio fido wxDevC++, uso sqlite3 e sono -persino- riuscito a compilare (compilare una libreria su windows pare essere un'impresa, ora capisco la gente che si ostina ad usare Linux / fine OT :asd: ) questo wrapper http://www.alhem.net/project/sqlite/index.html che se non dovesse crearmi problemi (tipo funzionalità troppo limitate) dovrebbe fare al caso mio e rendermi semplice la vita.

vizzz
31-05-2009, 22:51
a meno di non dover utilizzare campi con tipi particolari sqlite va benissimo, dai un occhio anche a firebird:
http://www.firebirdsql.org/

dovrebbe rispettare molto più ampiamente gli standard sql