Abfrage online bei einer SQL-Datenbank mittels MFC?



  • Hallo Zusammen

    Gibt es irgendeine Möglichkeit von MFC (Dialogbasierend) aus automatisch und permament (mittels Timer) extern über das Internet eine bestimmte SQL-Datenbank abzufragen und diese Daten in ein Listenfeld zu übertragen? Respektive die Verbindung zur DB herzustellen??

    Wenn nicht, wäre es alternativ dann möglich eine PHP-Datei ausführen zu lassen (im Hintergrund natürlich) welche nach der DB Abfrage die entsprechenden Ergebnise in Strings (zb: $ergebnis1 = "Text") zurückliefert?

    Und wie verarbeitet man das im Programm weiter?
    ich möchte diese Funktion lediglich als sogenannte "Warnüberwachung" in das Programm einfügen. Es sollte sonst keine Webapplikation oder Ähnliches werden.

    Codeschnipsel, Beispiele oder Hilfreiche Links wären sehr gut, denn auch bei Codeproject.com wurde ich nicht fündig.

    Danke und Gruss
    Wolf



  • soweit ich weiss, mußte doch eh den klienten von MS SQL installieren und darüber kannst dui ne verbindung zum server aufbaun (ging zumindest im netzwerk, also denk ich auch übers i-net) und vom Programm her greifst du ganz normal zu als währe es eine lokale DB. für den zugriff kannst du CRecordset verwenden, als beispiel.



  • hm.. den klienten von MS SQL Server hab ich aber diesmal bei der Installation weggelassen. Ich hab in der FAQ gelesen dass es eine Klasse gibt, mit welcher man verbinden kann die von Unix-Tom kommt und man diese auf seiner HP runterladen kann. Allerdings weiss ich seine Homepage nicht und die, welche er im Profil hat @Unix-Tom, funktioniert nicht. 🙂

    CRecord... hab ich mir schon angesehen, weiss aber nicht ob das eine schlaue variante ist..

    Sogar die Ausführung einer PHP-Datei übers Internet, so steht es hier im FAQ:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-55235.html bringt mich noch nicht ganz weiter... Wo muss ich diese Funktion in meine Klasse reinschreiben?? WEnn ich es in die normale DialogKlasse (CMAinDlg) reinsetze, bekomme ich gleich 18 Fehlermeldungen.

    Gruss
    WOlf



  • Hallo,

    dem Client sollte es in den meisten Fällen, sofern es keine Sicherheitsbeschränkungen gibt, egal sein, wo sich der Datenbankserver befindet. Demnach spielt es keine Rolle ob Du eine Datenbank über ein Intranet oder über das Internet ansprichst. Die Datenbank muß vom Client her nur erreichbar sein (TCP/IP)

    Je nach Datenbanksystem (MSSQL, mySQL, Oracle) installierst Du Dir die entsprechenden Treiber und kannst die Datenbank dann via ODBC oder nativ ansprechen. Die bereits genannten Klassen CRecordset, CDatabase kannst Du für den Verbindung und für Abfragen verwenden (oder eine der anderen tausend Klassen .... CODBCRecordset ist recht einfach)

    Ich befürchte aber, daß der Webserver nur Verbindungen von localhost zuläßt, sodaß Du von außen nicht draufkommst. Das sollte zumindest im Internet, mal von VPN abgesehen, die Standardkonfiguration sein.
    Das kann Dir aber der Serveradmin bestätigen oder dementieren 🙂

    Gruss
    foodax



  • foodax schrieb:

    Ich befürchte aber, daß der Webserver nur Verbindungen von localhost zuläßt, sodaß Du von außen nicht draufkommst. Das sollte zumindest im Internet, mal von VPN abgesehen, die Standardkonfiguration sein.
    Das kann Dir aber der Serveradmin bestätigen oder dementieren 🙂

    Hm.. dann bleibt mir wohl nichts anderes Übrig als eine PHP-Datei aus MFC heraus zu öffnen und die Werte auszulesen. Ich hab schon eine PHP-Datei, wo das Ergebnis als Variable wie zb $text = "irgendwas" gespeichert und ausgegeben wird. Das "Irgendwas" sind dann Daten aus der SQL-DB welche von der PHP-Datei abgefragt werden.

    Wie schon oben beschrieben, die Funktion um das zu realisieren weiss ich nicht wohin die kommt, da wenn ich das in meine Klasse schreibe gleich 18 Fehlermeldungen rausgegeben werden.

    Lg
    Wolf



  • Meine Klasse für die MFC/ODBC ist eine Wrapperklasse.
    Bervor DU jedoch soetwas machst verwendet schau lieber das Du es mit einem Websevice realisiertst.
    Da musst Du dann das Passwort der DB nicht weitergeben.


Anmelden zum Antworten