C++ Programm und MySql
-
Hallo
Ich habe mal eine Frage und zwar besteht ein großer unterschied zwischen ner Schnittstelle zu einer Access Datenbank und einer Schnittstelle zu einer MySql Datenbank
Ich bin ein absoluter Nobody in MySql ich hab da eigentlich gar keinen Plan von, nur ich benötige eine Schnittstelle von meinem C++ Programm zu meiner MySql Datenbank. Momentan habe ich eine Access Schnittstelle:
Schnittstelle (Laden und Speichern)
void MusicManagement::ReadDB() { CDatabase Musik_Daten; CString DB_File = "MUSIK"; CString sDsn; CString sDriver = "MICROSOFT ACCESS DRIVER (*.mdb)"; CString SqlString; // The ODBC Connection String sDsn.Format("ODBC;DRIVER={%s};DSN='MUSIK';DBQ=%s",sDriver,DB_File); TRY { // Open the database Musik_Daten.Open( "MUSIK" ); // Allocate the recordset CRecordset recset( &Musik_Daten ); // Build the SQL statement SqlString = "SELECT ID, Regal, Interpret, Titel, Rubrik, CD " "FROM tbl_Datenbank"; // Execute the query recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly); // Loop through each record CString Shelf; CString Interpreter; CString Title; CString Rubric; CString CD; while( !recset.IsEOF() ) { // Copy each column into a variable recset.GetFieldValue("Regal",Shelf); recset.GetFieldValue("Interpret",Interpreter); recset.GetFieldValue("Titel",Title); recset.GetFieldValue("Rubrik",Rubric); recset.GetFieldValue("CD",CD); MusicPiece music; music.Shelf = Shelf; music.Interpreter = Interpreter; music.Title = Title; music.Rubric = Rubric; music.CD = CD; m_MusicCollection.MusicData.push_back( music ); // go to next record recset.MoveNext(); } // Close the database Musik_Daten.Close(); } CATCH(CDBException, e) { // If a database exception occured, show error msg AfxMessageBox("Database error: "+e->m_strError); } END_CATCH; } void MusicManagement ::StoreDB(MusicPiece NewSong) { CDatabase music_data; CString SqlString; CString strErgebnis; // Open the database music_data.Open( "MUSIK" ); music_data.BeginTrans(); SqlString.Format( "('%s','%s','%s','%s','%s')",NewSong.Shelf.c_str(),NewSong.Interpreter.c_str(),NewSong.Title.c_str(),NewSong.Rubric.c_str(),NewSong.CD.c_str()); strErgebnis = "Insert into [tbl_Datenbank](Regal,Interpret,Titel,Rubrik,CD) values "; //conection with the databse strErgebnis += (LPCTSTR)SqlString; strErgebnis.Replace("''","NULL"); music_data.ExecuteSQL(strErgebnis); // send to database music_data.CommitTrans(); // stor data music_data.Close(); }
Ich hab mich auch schonmal in der FAQ umgeguckt aber das hilft mir nicht so wirklich weiter, da ich vieles nicht kenne über MySql und es dort nicht beschrieben wird. Deswegen hoffe ich ,dass mir jemand eine kleine Hilfe geben kann wie ich diese Access Schnittstelle umbauen kann. Oder komm ich nicht drum rum mich komplett mit MySql zu beschäftigen
Gruss Silver
-
DAs im FAQ ist nen Wrapper für die MySQL. Dann kannst du mit einfachen Funktionen die einzellnen sachen machen, die de haben willst..
-
Wenn du ODBC verwendest besteht fast kein Unterschied im Code
-
Müsste ich einfach nur die Namen ändern oder was muss ich machen??
-
den anderen odbc-treiber verwenden
-
Ähm hört sich zwar jetzt blöd an aber welchen anderen??
-
Na den der dafür vorgesehen ist. ODBC-Treiber von MySQL und auf eine MySQ-DB zuzugreifen.
Schau mal der www.mysql.de