C++ SQL Insert, Update, Delete ??



  • Hi

    Bin neue in Datenbank Programmierung. Kein meister ist vom himmel gefallen, ich wünschte ich wärs aber 😕

    ich kann erfolgreich aus meinem SQL Server 2000 die Datensätze auslesen.

    CDBVariant value;
    	CString barcode,articel,price;
    	char sql_statement [2048] = "";
    	bool exist = false;
    
    	GetDlgItemText(IDC_BARCODE,barcode); //get the BarCode from barcode textfield
    	strcpy(sql_statement,"SELECT barcode FROM cosmetik");
    	//strcat(sql_statement,barcode);
    
    	//CDatabase object "db" created to connect database
    	CDatabase db;
    	db.OpenEx(_T("DSN=beauty"),CDatabase::noOdbcDialog);  
    	//CRecordset object "rs" created to access and manipulate database records.
    	CRecordset rs(&db);
    
    	rs.Open(CRecordset::forwardOnly,sql_statement);
    	//Get quantity from Database
    	int n = rs.GetODBCFieldCount( );
    
    	while(!rs.IsEOF()) 
    	{
    		if (!rs.IsEOF())
    		{   
    			rs.GetFieldValue("barcode",value);
    			if (strcmp(*value.m_pstring,barcode)==0) //Add Product if Barcode in Database
    				{	
    					exist = true;					//true if articel already exist in database
    				}
    				rs.MoveNext( );
    		}
    	}
    

    Jedoch habe ich keine Ahnung wie ich welche einfügen, updaten, lösche und ändern kann.

    Ich hab zwar gesucht in der Hilfe jedoch keine Beispiele gefunden. Probiere schon seit fast einer Woche. Kann mir jemand helfen ??

    Indian



  • www.mut.de -> Leseecke -> VC++ in 21 Tagen -> Kapitel 14 (?) ODBC Datenbanken

    Damit habe ich es erstmal hinbekommen. Es funktioniert, aber toll finde ich es nicht, Fehlerabfangen fehlt.

    Wenn du es morgen noch nicht gefunden hast helfe ich dir weiter, muss los...



  • leider gibt es keine kategorie

    vc in 21 tagen 😞





  • Servus,

    http://download.pearsoned.de/leseecke/VCPLUS6_21Tg/data/start.htm

    Tag 14 - ODBC blabla

    Ansonsten auch noch MSDN "CRecordset" dann "Edit", "Update" etc. Sind auch noch Beispiele dabei.

    und

    im Forum nach "Datenbank", "DB Zugriff", "CRecordset", "CDaoDatabase" suchen. Findest bestimmt was, wenn nicht fragen... 😉

    *winke*
    Hellsgore



  • thx für die schnelle antwort.

    jedoch bin ich neu in datenbanken zeugs. als gesucht hab ich und bis jetzt nur das gefunden was ich eigentlich schon zig mal gelesen hab.

    ich verstehe nicht wie ich daten in die jeweilige spalte in einer tabelle meiner Datenbank einfügen kann. Das auslesen war nicht besonders schwert. Jedoch schaffe ich es nicht irgendwas reinzuschreiben. Ein richtiges Beispiel habe ich bis jetzt auch nicht gefunden.



  • Okay, ich hab dir einfach mal eine aktuelle Codestelle von mir kopiert.

    // Neuen Datensatz anlegen und füllen
    			m_OrteSet.AddNew();
    			m_OrteSet.SetPlz(m_strPlz);
    			m_OrteSet.SetOrt(m_strOrt);
    			// Den neuen Datensatz in die Datenbank schreiben
    			m_OrteSet.Update();
    			// Die Daten neu lesen
    			m_OrteSet.Requery();
    

    Wenn es das ist, was du kennst - was fehlt dir daran, was geht vielleicht nicht. Wenn du etwas vermisst, dann frage konkret danach.
    Wir sind alle leider keine Hellseher. 😉



  • also bis addnew() verstehe ich das ja.

    Jedoch heist meine Spalten in meiner Tabelle z.B.

    barcode
    articel
    price

    und ich verstehe nicht wie ich diese füllen soll. Die Variablen die du benutzt verstehe ich jedoch wie verbinden diese sich bzw. fügen diese die Daten in die Datenbank ein



  • Der Austausch passiert mit Hilfe von DoFieldExchange. Diese Funktion hat dein Recordset, wenn es mit dem Assistenten erstellt wurde.
    Wie das genau funktioniert habe ich mir mal in der MSDN angeschaut aber nicht so gut verstanden, dass ich es dir erklären könnte.

    Du müßtest in dem Recordset Membervariablen haben, die so ähnlich heißen wie die Spalten in der Datenbank. Und in diese Variablen schreibst du die Werte, die dann in die Datenbank sollen.

    Beispiel:
    barcode heißt die Spalte in der Tabelle
    m_barcode heißt die Variable im Recordset

    Okay?



  • so ungefähr.. gibts kein beispiel.. ausserdem nutze Visual Studio NET



  • Das Thema Datenbanken per ODBC wird generell sehr stiefmütterlich behandelt. Das heißt:
    Entweder suchst du dir im Internet den Wolf, oder du rennst entäuscht alle Buchläden und Bibliotheken ab, oder du liest MSDN bis zur Vergasung - oder du mischt alles und fragst auch hier.

    Solltest du allerdings eine ergiebige Infoquelle finden, dann poste sie bitte hier, denn es gibt noch mehr Leute die sowas suchen.

    Ich nutze noch VC6 aber so groß sollte der Unterschied doch nicht sein... 😕



  • verdammt,

    ich hab zwar 3 bücher aber nichts erkärt wie und wo ich die membervariablen intialisiere und eine verbindung zur datenbank herstelle.



  • Du könntest dir auch meine Klasse runterladen und die verwenden.

    http://www.sensorme.de/dateien/odbc.zip

    Hier setzt man nur SQL-Querys ab wie es der Standard hergibt.



  • gibts eine Readme dazu.. wie deine Klasse funktioniert ?

    evtl ein Beispiel ?



  • also ich hab das hier gefunden wie man CRecordset nachträglich einfügt. Funktioniert bei Visual Studio NET eigentlich genauso.

    http://www.mindcracker.com/mindcracker/c_cafe/odbc/add_odbc_support.asp

    Mal sehen ob ich das ganze zum laufen bekomme



  • habs hinbekommen.

    Falls irgendjemand noch wissen will wie das funktioniert.

    Helfe gerne. Thx an alle die geholfen haben 👍



  • Hallo Indian,

    ja, ich wüßte gerne wie Du das Problem gelöst hast, ich bastel nämlich auch schon seit Ewigkeiten daran herum.

    Viele Grüße,
    Arwen



  • was ist denn dein problem ?



  • Ich möchte gerne mit Hilfe von Recordset ein Insert in eine MySQL-Datenbank machen. AddNew kann ich nicht verwenden, weil ich eine ID in meiner Datenbank habe, die automatisch hinzugefügt werden soll. Ich möchte die Werte aus den Feldern mit insert in die Datenbank einfügen, mehr möchte ich gar nicht, aber das scheint komplizierter zu sein, als ich dachte.



  • Und warum dann ODBC? Ist doch um längen langsamer.

    Etwas einfügen geht mit

    INSERT INTO 'tabelle' SET 'feld' = 'blabla'


Anmelden zum Antworten