MFC/MS-SQL: Problem bei StoredProcedure mit Variablen-Größe?
-
Hallo zusammen,
ich greife in meiner Anwendung (MFC) auf StoredProcedures (MS-SQL-Server) zu.
Jetzt bin ich allerdings auf ein Problem gestoßen und meine Anwendung stürzt - ohne Fehlermeldung - ab.
Irgendwo in diesem Code-Fragment passiert es..
int iSize VARIANT vVariable; std::string datei_inhalt = ""; //Input-Parameter erstellen this->makeXmlParameter(datei_inhalt); //Funktion um eine TXT-Datei zeilenweise einzulesen (XML-Format) vVariable.bstrVal = bstr_t(inhalt.c_str()); //datei_inhalt konvertieren + an vVariable übergeben iSize =datei_inhalt.length() + 1; .... //Input-Parameter an StoredProcedur übergeben m_Cmd->Parameters->Append(m_Cmd->CreateParameter(bstr_t("@inputparameter"), ADODB::adVarChar, ADODB::adParamInput, iSize, vVariable)); .... //Funktion zum Einlesen der TXT-Datei bool makeXmlParameter(std::string &inhalt) { std::ifstream xml_datei; string zeile = ""; xml_datei.open("C:\\eine_datei.txt", std::ios_base::in); if(xml_datei.is_open()) { while(!xml_datei.eof()) { std::getline(xml_datei, zeile); inhalt = inhalt + zeile; } } xml_datei.close(); } ....
Normalerweise funktioniert das problemlos.
Allerdings scheint es mit der Größe der TXT-Datei ein Problem zu geben.
Mit 21KB tritt der Fehler auf - ist die Datei kleiner, so funktioniert alles wieder.Ich konnte ausserdem festestellen, dass der Fehler schon auftritt, bevor überhaupt die StoredProcedur aufgerufen wurde - es muß somit ein Problem auf der MFC-Seite sein.
Ich könnte mir vorstellen, dass vielleicht die Variant- oder String-Variablen nur eine bestimmte Größe annimmt, oder vielleicht die Variable iSize eine falsche Größe enthält?
Vielleicht muss ich mit einem SafeArray arbeiten - keine Ahnung - ich bekomme ja keine Fehlermeldung...Hat jemand eine Idee woran es liegen könnte?