OK jetzt mal ganz kurz und knackig mein Problem mit ODBC



  • Genau das meinte ich Tow-B.de, ich hatte in deiner anderen antwort nicht das gefühl als hättest du verstanden was ich wollte, deswegen hab ich das ja nochmals so ausführlich geschrieben. Danke für deine Hilfe



  • Hallo Tow-B.de du hattest mir ja die beschreibung zum speichern in dateien gegeben, ich dachte auch das ich es ENDLICH verstanden hätte nur wenn ich:

    strSQL = "Insert into tabelle(Spalte1, Spalte2, Spalte3) values('"+strSpalte1+"','"+strSpalte2+"','"+strSpalte3+"'"; //SQL schreiben
    

    in diese Spalte meine Spaltennamen eintrage, sagt mir der Compiler als das ich ein Semikolon vor jeder Spalte vergessen hätte 😕 das verwirrt mich etwas.

    Des weiteren ich mus doch strSQL als CString festlegen oder??

    gruss Silver



  • Versuch mal:

    strSQL = "Insert into tabelle(Spalte1, Spalte2, Spalte3) values(\'"+strSpalte1+"\',\'"+strSpalte2+"\',\'"+strSpalte3+"\'"; //SQL schreiben
    


  • Hi,

    klar, strSQL musst du als CString deklarieren, auch strSpalte1, strSpalte2 und strSpalte3 sind CStrings! Ich denke mal das du nicht immer das selbe in die Spalten schreiben willst, oder? ansonsten:

    trSQL = "Insert into tabelle(Spalte1, Spalte2, Spalte3) values('test','test','test')";
    

    Die Tabellenspalten sollten dabei aber vom Typ Text sein.

    Aber was für ein Problem hast du mit Semikolons(li,la? 😃 ) Hast du mal nen genaueren Fehler? Bzw wo kommt der Fehler? Beim ausführen, oder beim compilieren?

    Ach du schreibst übrigens in eine Datenbank, okay bei Access entspricht die Datenbank einer Datei, das muss aber nicht immer so sein.

    edit: Bei dem obigen SQL fehlt einfach nur die letzte Klammer 😉

    (schon zweimal edited, sekt zum mittag kommt ned so gut 😃 )

    edit3: du musst vor den single-quotes nicht escapen, mach ich auch nie. Allerdings habe ich so das Gefühl das er die Variablen nach values auch durch seine Spaltennamen ersetzt hat.



  • Die Fehlermeldung ist immer noch da 😕

    Das sind die Fehlermeldungen:

    C:\Dokumente und Einstellungen\Dors\Desktop\C++ Projekte\Musik_Datenbank\MusicManagement.cpp(216) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'NewSong'

    C:\Dokumente und Einstellungen\Dors\Desktop\C++ Projekte\Musik_Datenbank\MusicManagement.cpp(216) : error C2143: Syntaxfehler : Fehlendes ';' vor 'string'

    ausserdem noch

    C:\Dokumente und Einstellungen\Dors\Desktop\C++ Projekte\Musik_Datenbank\MusicManagement.cpp(216) : error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' akzeptiert (oder keine geeignete Konvertierung moeglich)

    Hmm 😕



  • benutz mal CString und nicht std::string



  • Hatte das schon richtig gemacht, musste das nur so um ändern wie du es in deinem letzten Beispiel geschrieben hattest:

    trSQL = "Insert into tabelle(Spalte1, Spalte2, Spalte3) values('test','test','test')";

    Wobei ich aber weiterhin nen CString strSQL benutzen kann.

    Nur da wo du Insert into tabelle schreibst, muss ich da net einfach meinen Tabellennamen aus Access angeben????



  • Der Compiler sagt mir nämlich als Ausgabetabelle nicht gefunden, wenn ich schreibe Insert into tblDatenbank(......)



  • klar muss da dein tabellenname rein 🙂

    ich merke schon, du lernst schon noch SQL. Das solltest du dir mal genauer ansehen. Dann kannst du deine ganzen Infos deiner Sammlung in Tabellen speichern und einfach nen Select drauf loslassen und brauchst das Ergebnis nur noch anzeigen lassen - sogar schon sortiert 😉

    http://www.sql-und-xml.de/sql-tutorial/insert-zum-einfuegen-von-zeilen.html



  • Ich hab von SQL keine ahnung, hab nur mit Access zu tun gehabt. Und dort war das einzige wirkliche was mit SQL richtig zu tun hatte abfragen erstellen.
    Aber wieso sagt mir der Compiler das er meine Datenbanktabelle nicht finden kann??



  • Ok Fehler gefunden jetzt bekomme ich aber wenn ich abspeichern will ne komische Meldung:

    Debug Assertion Failed
    Dann nennt der den Pfad meiner Datenbank
    Dann kommt File: dbcore.cpp
    line:512

    Was heisst das??



  • Drück "Wiederholen", zeig den Code, wo du landest.
    (Achte besonders auf Kommentare und die Zeichenfolge Assert.)



  • HILFE!!!!!!!! 😮

    Jetzt bin ich total verwirrt ich krieg eine Fehlermeldung nach der anderen.

    z.B. Unbehandelte Ausnahme bei 0x5f7023e3 (MFCD42D.DLL) in Musik_Datenbank.exe: Benutzerhaltepunkt.

    oder : Eine Ausnahme "Unbehandelte Win32 - Ausnahme"ist in Musik_Daten.exe aufgetreten

    Was nun????



  • Startest du mit F5? Siehst du irgendwelchen Quellcode, wo das Wort AssertIsWindow oder ASSERT oder so vorkommt?



  • Der Debug stop bei: ASSERT(m_bTransactionPending);



  • Der ganze Abschnitt sieht so aus:

    BOOL CDatabase::CommitTrans()
    {
    	ASSERT_VALID(this);
    	ASSERT(m_hdbc != SQL_NULL_HDBC);
    
    	if (!m_bTransactions)
    		return FALSE;
    
    	// BeginTrans must be called first
    #ifdef _DEBUG
    	ASSERT(m_bTransactionPending);
    #endif
    
    	_AFX_DB_STATE* pDbState = _afxDbState;
    	RETCODE nRetCode;
    	AFX_SQL_SYNC(::SQLTransact(pDbState->m_henvAllConnections, m_hdbc, SQL_COMMIT));
    	BOOL bSuccess = Check(nRetCode);
    
    	// Turn back on auto commit
    	AFX_SQL_SYNC(::SQLSetConnectOption(m_hdbc, SQL_AUTOCOMMIT,
    		SQL_AUTOCOMMIT_ON));
    	DEBUG_ONLY(m_bTransactionPending = FALSE);
    
    	return bSuccess;
    }
    


  • Na, dann ist doch schon einfacher:

    // BeginTrans must be called first
    #ifdef _DEBUG
        ASSERT(m_bTransactionPending);
    #endif
    

    Was sagt dir der Kommentar? Hast du BeginTrans aufgerufen? 🙂



  • Hmmm Hups 🙄



  • Oh sch... SOOORRYY - das hab ich in meinem Beispiel total vergessen

    bitte nicht haun 😉



  • Ok da du mich hier ja so zusagen durch gebrügelt hast damit ich das verstehe und da ich nur noch eine Frage habe lass ich dich in ruhe und frag dich ganz lieb 😃


Anmelden zum Antworten