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


Anmelden zum Antworten