Rückgabe SQLBindCol() ??



  • Hallo zusammen,

    ich bin mit VC++ (API)über ODBC mit einer Access Datenbank verbunden und greife mit SQLBindCol() auf eine Zelle einer Tabelle
    dieser Datenbank zu. Wenn ich nun versuche auf eine Spalte
    zuzugreifen die es in der ausgewählten Tabelle gar nicht
    gibt, ist der Rückgabewert von trotzdem
    SQL_SUCCESS.

    Was kann ich noch tun um herauszufinden ob es eine Spalte
    auch tatsächlich gibt ??



  • Hallo,

    dann solltest Du Deine Schnittstelle ordentlich definieren. Wozu kann das wohl gut sein auf Spalten zu zugreifen, die es nicht gibt. Macht doch eigentlich auf den ersten Blick keinen Sinn, oder?

    Gruß

    Oliver 😃



  • Meiner Meinung ist SqlBindCol() .. Bind Collection .. nicht zum selectieren von Daten, sondern zum Binden eines Programm - Zugriffpakets bestimmt, solange die Datenbank ein solches Verfahren unterstützt, wie DB2.

    Bist du dir da sicher das die Funktion die richtige ist ? .. hab aber auch noch nichts mit c++ odbc gemacht..

    mfg



  • Zunächst vielen Dank für die Tipps.

    Ich greife über ODBC aud die Datenbank zu, wenn also irgent ein SuperDAU eine Spalte gelöscht hat werde ich das im C Code nicht merken. Was eigentlich nicht sein kann. (Zugriff auf nix und dann mit den Erg. was sinnvolles anfangen ?)
    Also möchte ich gerne wissen ob da einer dran war..



  • Hi,
    ich verstehe noch immer nicht, wie das passieren soll. ODBC benötigt doch eine SQL-Amweisung aus einer von Dir entwickelten Anwendung heraus, die dann eine Spalte löschen würde. Der Administrator (also Du) wird ja sicherlich kein DAU sein, oder?? 😉 Auf jeden Fall ist dieses SQLBindCol derjenige Befehl (Schnittstelle), der eine Verknüpfung mit Inhalten aus der Datenbank zu programminternen Variablen herstellt und das zeilenweise für eine definierte Ergebnismenge aus der Abfrage der Datenbank per Select. Wieviele Spalten in wievielen Tabelle hast Du denn und wieviele willst Du prüfen? Ist das denn den Aufwand wert?
    Aber wenn Du das unbedingt brauchst, dann habe ich was in einem ODBC-Buch gefunden:

    SQLColumns
    Conformance

    Version Introduced:ODBC 1.0
    Standards Compliance:X/Open

    Summary

    SQLColumns returns the list of column names in specified tables. The driver returns this information as a result set on the specified StatementHandle.

    Also gibt der Befehl offensichtlich alle Namen der Spalten zurück, die Du ja dann in Deinem Programm prüfen kannst.

    Kannste ja mal probieren und Bescheid sagen, wenn es funktioniert hat.

    Gruß

    Oliver 😃



  • .. wieder was zu odbc gerlernt.. bei DB2 ist die Collection im Endeffekt der Zeitstempel der kompelierten App, welche man gegen die Datenbank "bindet" ..
    (cmd "DB2 bind .....")
    Somit erhält diese Application mit dem bestimmten Zeitstempel Zugriff auf DB2 via nativ db2 Zugriff..
    Beim binden werden alle statischen SQL's vom dbm gecheckt ,für beschleunigtem Datenzugriff vorgeparst und optimiert..
    Folge des ganzen: Es haben nur Applikationen mit 100%ig validiertem SQL Zugriff auf DB2 und nur diese, solange man die native, schnelle DB2 C++ API benutzt

    .. aber das nur nebenbei zu DB2 🙂

    mfg



  • Vielen Dank für die Tipps, ich werd SQLColums mal ausprobieren.
    Bis später.....


Anmelden zum Antworten