Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Datenbankanbindung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
09.08.2004, 10:31 Uhr
~ludmilla
Gast


Tach,

ich muss eine Anwendung schreiben, die Daten aus einem System liest und in ein anderes repliziert.
Realisiert werden soll das Ganz als eine in c++ entwicklete Konsolenanwendung, die durch einen Scheduler automatisiert gestartet wird.

Mit der datenbankverbindung komme ich nicht weiter, und hoffe daher auf Euere Hilfe.

1. Ich muss von einem SQL Server lesen und auf einen mySQLServer schreiben. Würdet Ihr das über ODBC oder über ADODB realisieren?

2. Wir arbeiten mit der Entwicklungsumgebung MS Visual Studio .net. ich weiß nicht welches Objekt ich für die datenbankverbindung nutzen soll. Folgende drei hatte ich schon angedacht: CDatabase, CDataSource, CDataConnection.

Hat vielleicht jemand einen Tipp was ich verwenden sollte?

Am meisten würde ich mich natürlich über etwas Beispielcode freuen :-)


Vielen Dank

Gruß
ludmilla
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.08.2004, 10:43 Uhr
~iBOT
Gast


Mach es mit ADODB von Micrsoft! Ich würde es jedoch nicht über odbc machen sondern ditekt auf die Datenbank zugreifen! Ich kenne mich leider nur mit dem ADODB von VC++ 6 aus wenn dir das Hilft kann ich dir mal nen Bsp. posten?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.08.2004, 10:46 Uhr
~ludmilla
Gast


Auja, bitte *freu*
mit einem Beispiel wäre mir sehr geholfen.
Ich stochere noch immer mit einer langen Stange im Nebel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.08.2004, 10:55 Uhr
~iBOT
Gast



C++:
#include <afxdisp.h>
#define _AFXDLL
#define STRICT
#import "C:\Programme\Gemeinsame Dateien\System\ado\msado15.dll" rename ("EOF","adoEOF") no_namespace
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define printPath "c:\\outgoing\\"
#define CREATEiNSTANCE(sp,riid) { HRESULT _hr =sp .CreateInstance( __uuidof( riid ) ); \
                                  if (FAILED(_hr)) _com_issue_error(_hr); }


#define RsITEM(rs,x) rs->Fields->Item[_variant_t(x)]->Value
#define UC (char *)



so dass sind erstmal die includes die du brauchst!kann sein daß du ein paar davon nicht brauchst kommen nur gerade aus meinem Prog!


C++:
::CoInitialize(NULL); // wichtig die com schnitstelle intialisieren und zum schluß wieder frei geben! Kannst du auch einmal am anfang deines Progs machen!
_RecordsetPtr   spRS;
    _ConnectionPtr  spCON;
    int *pImgIDs =NULL;
    char sql[1024];
    int count;
    try{
        CREATEiNSTANCE(spCON,Connection);

        spCON->ConnectionString = "Provider=SQLOLEDB;Data Source=ip;Initial Catalog=Datenbank;User ID=Benutzer;Password=pass;";//mu0ßt du nach deinen ansprüchen zusammen bauen
        spCON->Open( "", "", "", -1 );
        
        CREATEiNSTANCE(spRS,Recordset)
        spRS->PutRefActiveConnection( spCON );

        
    
        //get imgaeIds
        
        sprintf(sql, "SELCT ......");//hier bstellst du dein select etc. zusammen
        spRS->Open(sql, vtMissing, adOpenKeyset, adLockBatchOptimistic, -1);
        count= atoi(UC _bstr_t(RsITEM(spRS,"c")));
        pImgIDs = new int[count + 1];
        pImgIDs[0] = count;
        
        int test= atoi(UC _bstr_t(RsITEM(spRS,"test")));//zugriff auf die einzelnen Daten!test ist das Feld in der Datenbank
        spRS->MoveNext();//sprinkt zum nächsten Datensatz!Gibt noch viele weitere Befehle!
        
        spRS->Close();
        spCON->Close();
        ::CoUninitialize();    
           }
        catch( _com_error &e){
        _bstr_t bstrSource(e.Source());
        _bstr_t bs =  _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t(" Msg: ")
            + _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: ")
            + _bstr_t(e.Description());
        
        printf("getImgIds\n%s  %s",UC bs,UC bstrSource);
        return NULL;
    }

    }


viel spaß! Bei Fragen kannste ja einfach posten

Dieser Post wurde am 09.08.2004 um 11:23 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.08.2004, 11:23 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


also über ODBC ist das einfacher zu lösen glaube ich, sobald ich daheim bin, schau ich mal ob ich ein beispiel finde, welches keine mfc benutzt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.08.2004, 11:30 Uhr
~iBOT
Gast


Aber ODBC ist doch nur die Art der Verbindung! Es gibt ein ODBC Tool genannt gsodbc! Ist jedoch nicht sogut wie real mit ADODB! Habe schon einige Progs damit geschrieben und die Laufen superstabil obwohl ich durchgehend auf die Datenbank zugreife! Und wenn du dann noch eine Funktion für die Connection schreibst hast du nur noch einen ganz kleinen code!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.08.2004, 14:30 Uhr
~ludmilla
Gast


@ibot Öhm, also das ist doch ein bißchen aufwändig für meine Bedürfnisse.
Hab mich jetzt mal an einer OleDB versucht, bin aber noch nicht wirklich erfolgreich.

@Flosoft Dein Vorschlag würde mich auf jeden Fall interessieren!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
09.08.2004, 16:57 Uhr
~iBOT
Gast


Such mal bei google nach GSODBC! Ist ne gute kostenlose lib!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
09.08.2004, 22:43 Uhr
0xdeadbeef
Gott
(Operator)


Machs mit ODBC, das ist auf alle Fälle sinnvoller, weil portabler. Ansonsten hängst du das nächste mal, wenn dein Auftraggeber das an ne andere Datenbank hängen will, völlig in den Seilen.

Es gibt ne schöne C++-Wrapper-Bibliothek für ODBC, die OTL. Das Ding nennt sich zwar Oracle Template Library, aber es kann inzwischen auch ODBC, das würd ich mir mal ankucken.

Was ADODB angeht - das ist wohl eins der dreckigsten Pseudo-Datenbank-Interfaces, die ich je gesehen habe. ODBC ist vielleicht nicht der Weisheit letzter Schluss, aber ADODB ist Wahnsinn.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.08.2004, 14:51 Uhr
~ludmilla
Gast


Hab mich für die ODBC Variante entschieden und sie funktioniert recht gut.
Brauchte lediglich einen mySQL Treiber für die ODBC Schnittstelle.

Vielen Dank für Euere Hilfe!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: