Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    [C++] Come usare ADO senza VisualC++

    sto cercando di utilizzare la libreria ADO (msado15.dll) senza usare visualC++

    nel caso specifico sto utilizzando devC++ ma potrei anche usarne un'altro, cmq
    aggiungo la libreria ai riferimenti del progetto(sarebbe interessante capire come poterlo fare con qualsiasi editor di testo)

    ho questo codice di seguito e ottengo in compilazione degli errori del tipo:

    _RecordsetPtr non dichiarato; _bstr_t non dichiarato ecc ecc insomma tutti questi identificatori non dichiarati ?? potete darmi qualche suggerimento?
    non dovrebbero essere dei tipi definiti all'interno della libreria? forse non la vede?
    come posso fare?

    codice:
    #include <stdio.h>
    #include <iostream>
    #include <windows.h>
    
    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 DSN-Less con un database ACCESS
            //_bstr_t strCnn("DRIVER={Microsoft Access Driver (*.mdb)};UID=;PWD=;DBQ=mio_database.mdb");
            
            // Stringa di connessione con DSN Attivo, valida con tutti i database
            _bstr_t strCnn("Provider=MSDASQL; Data Source=mio_database; Database=mio_database; User Id=; Password=; Security Info=True");
            
            // Query SQL (seleziono tutto il recordset presemte nella tabella)
            pRst->Open("SELECT * FROM mia_tabella;", 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);
    	
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    #import "c:\Programmi\File comuni\SYSTEM\ADO\msado15.dll"

    e dovrebbe andare...
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    #import mi pare sia una direttiva solo per c++
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Se non includi l'header di msado15 non fai molta strada.
    Poi _bstr_t è definito in comutil.h che definisce tra l'altro anche variant_t.

    In comip.h è definita la classe _com_ptr_t che serve per lavorare con gli smartptr di COM.

    Generalmente basta fare un include di comdef.h per lavorare con COM (che include l'header precedentemente citato), ma non so se in questo caso sia necessario, credo che l'header msado15 definisca ciò che serve.

  5. #5
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    come ricavo l'header della libreria msado15?


    inoltre non ho i file "comutil.h", "comip" e "comdef.h" da includere? dipende forse dal tipo di compilatore? sono dei header non standard?


    X SCANCODE

    codice:
    #import "c:\Programmi\File comuni\SYSTEM\ADO\msado15.dll"
    è una direttiva conosciuta solo da visuaC++ (perlomeno mi è stato detto cosi), in ogni modo il compilatore li si pianta

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Io con il borland li ho, non so se il compilatore che tu usi li abbia di default.
    Cmq mi sembra che siano stati presi direttamente dal VisualC++ e adattati per funzionare con il borland (visto che sono zeppi di #ifndef __BORLANDC__ ).

    In ogni caso non sono header standard.

  7. #7
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Perchè non vuoi usare il VisualC?
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  8. #8
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    Originariamente inviato da XWolverineX
    Perchè non vuoi usare il VisualC?
    motivo esclusivamente didattico, non ho nulla in contrario a VisualC anzi...
    mi interessava solo capire come posso farlo anche da notepad

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.