Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

ODBC πρόβλημα στην λήψη δεδομένων

Îåêßíçóå áðü ôï ìÝëïò giorger. Τελευταία δημοσίευση από το μέλος panagiotis_georgiadis στις 12-05-2009, 23:52. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  28-07-2008, 15:27 43744

    ODBC πρόβλημα στην λήψη δεδομένων

    Καλησπερα σε όλους.
    Γράφω μια εφαρμογή (C++) η οποία μέσω ODBC μιλάει και παίρνει δεδομένα από μια PostgreSQL βάση δεδομένων. Δεν χρησιμοποιώ απευθείας κλήσεις του ODBC αλλά ένα wrapper που έχω βρει και με έχει βολέψει κάπως. Το θέμα μου είναι το εξής. Προφανώς δεν έχω καταλάβει πως δουλεύει η SQLGetData() κλήση και αυτό γιατί όταν τρέχω το πρόγραμμα μου σε debug mode (Visual Studio 2005) όλα πάνε καλά, αλλά αν το τρέξω χωρίς το debug mode μόλις τελειώσει η συναρτηση μέσα στην οποία υπάρχει η κλήση προς την SQLGetData(), πετάει το παραθυράκι που λέει για ένα exception και αν θέλω να γίνει Report στη Microsoft κτλ κτλ... Δοκίμασα να βγάλω άκρη με try...catch... αλλά δεν....

    Το κομματάκι του κώδικα είναι πολύ απλό...:

    int numofaps;
    SqlStatement *data=new SqlStatement(db);
    data->Execute("select \"Latitude\",\"Longtitude\",COUNT(\"BSSID\") as num from wifidata group by \"Latitude\",\"Longtitude\" order by num desc limit 1");
    if (data->Next())
    data->GetData(WORD(3),DWORD(19),&numofaps,NULL);
    delete data;


    και εδώ ο κώδικας της GetData από το wrapper που χρησιμοποιώ...:

    void SqlStatement::GetData(WORD col, DWORD maxlen, void* data, SDWORD* len)
    {
    assert(IsValid());
    CheckStatus(::SQLGetData(m_hstmt, col, SQL_C_DEFAULT,
    data, maxlen, len));
    }


    Έχει κανείς καμία ιδέα να με ξεστραβώσει?Confused

    Y.Γ: Ελπίζω να έθεσα το ερώτημα μου στο σωστό forum.



    Δημοσίευση στην κατηγορία:
  •  12-05-2009, 23:52 50680 σε απάντηση της 43744

    Απ: ODBC πρόβλημα στην λήψη δεδομένων

    Εφόσον το πρόβλημά σου είναι ότι δεν έχεις καταλάβει πώς δουλεύει η SQLGetData, εδώ θα δεις ακριβώς ότι θέλεις να μάθεις. Με μια πολύ γρήγορη ματιά διαπιστώνω μια προφανή διαφορά: δεν αναφέρεις ακριβώς τι SQLRETURN κωδικό επιστρέφει η SQLGetData.

    Επίσης θα βοηθούσε πολύ να μας έλεγες ακριβώς τι Exception πετάει το παράθυρο. Επίσης, το παράθυρο αυτό μπορείς να το αντικαταστήσεις με attach to Debugger (συνήθως έχει ένα κουμπί με σχετική επιλογή) και τότε μπορείς να δείς σε τι κατάσταση βρίσκεται το call stack σου. Αυτό που υποψιάζομαι (χωρίς να βάζω το χέρι στην καρδιά) είναι ότι υπάρχει πρόβλημα inter-process communication. Σε debug mode η εφαρμογή σου και η βάση δεδομένων βρίσκονται σε άλλη κατάσταση απ'ότι σε κανονική λειτουργία (μεγάλη ιστορία).

     


    Panagiotis Georgiadis
    HBM Netherlands B.V.
    www.twitter.com/HimWithCurls
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems