View Full Version : Visual C++ e OLE db...
Devo fare un programmino per l'uni... creare l'interfaccia per un db access con Visual C++ 6. Non dovrebbe essere difficile... :rolleyes:
Mi consigliate dei buoni tutorial? Avere degli esempi sotto mi faciliterebbe non poco la vita!
Grassie...;)
Vuoi usare le MFC ? Oppure ADO ?
Tu cosa mi consigli? Io punterei sulle ADO, non vorrei spendere tanto tempo sull'implementazione perché quello che conta (per l'esame) è la documentazione (UML)...
Con le MFC fai al volo......
Con le MFC hai due possibilità
Crei un nuovo progetto con supporto MFC includi AfxDB.h...
Aggiungi temporaneamente il DB come DSN utente o di sistema...
Insert -> New Class -> MFC Class -> Name: nome della classe ->
Base Class: CRecordset -> OK -> Seleziona il DSN che hai creato -> Snapshot -> Seleziona le tabelle che vuoi usare (attenzione devono apparire sempre nelle query tutti i campi delle tabelle che selezioni)
Poi nel codice:
CDatabase db;
try
{
CString conn = _T("DRIVER=Microsoft Access Driver (*.mdb); DBQ=D:\\cStatDB\\cStats.mdb;");
db.OpenEx((LPCTSTR)conn,CDatabase::noOdbcDialog);
CMdb2 rs(&db);
CString sql = "SELECT * FROM Users;";
rs.Open(AFX_DB_USE_DEFAULT_TYPE, (LPCTSTR)sql);
if(!rs.IsEOF())
{
//nei dati pubblici della classe trovi
//tutti gli attributi della tabella Users
}
rs.Close();
db.Close();
}
catch(...)
{
AfxMessageBox("Errore DB");
}
Purtroppo non puoi usare OLEDB, ma solamente ODBC (questa è una connessione senza DSN, ma è sempre ODBC...
Se dovessi usare OLEDB devi a tutti i costi usare ADO... PEr usare ADO ci sono diverse strade... Ad esempio usare il controllo ActiveX o direttamente la libreria...
Grazie cionci... adesso provo come mi hai consigliato tu. Mi sembra troppo semplice però! :p Quali sono le "controindicazioni" di una soluzione del genere? Mi sembra di aver capito che così non potrei usare una tabella ActiveX del tipo DataGrid...
Nell'esempio CMdb2 è la classe creata sopra (non l'avevo specificato)...
Le uniche controindicazioni sono che sei legato ad ad MFC (quidi Microsoft)... Lo saresti stato comunque anche se avessi usato ADO ;)
Poi nel ciclo interno manca un rs.MoveNext(); per scorrere i vari record...
Puoi usare data grid, ma te la dovresti poplare a mano (non è difficile)...
Comunque se usi un controllo ActiveX Microsoft ADO Data Control e un Microsoft Data Grid puoi fare popolare automaticamente i dati (puoi anche far gestire automaticamente update, insert e delete ;))
Originariamente inviato da cionci
Comunque se usi un controllo ActiveX Microsoft ADO Data Control e un Microsoft Data Grid puoi fare popolare automaticamente i dati (puoi anche far gestire automaticamente update, insert e delete ;))
Aggiudicato ADO, per le query non ho problemi... Adesso mi metto al lavoro! :(
Grazie 1k per l'aiuto cionci :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.