Net-srac Geschrieben 14. August 2001 Geschrieben 14. August 2001 Tach Coder, kann mir einer von euch erklären wie ich in C++ mit Zugriff auf eine Datenbank meine eigenen Abfragen stellen kann?. Also die Datenbank hab ich schon angebunden. Das mit den Standardelementen (vor, zurück) hab ich auch schon hinbekommen. nun will ich aber, dass ich z.b. ich ein Feld namens ID eine Zahl eingebe und dass mir in den anderen die restlichen dazugehörigen daten angezeigt werden. also so.: "Select * From test where id=$id" wäre es ja in PHP. Aber wie tu ich sowas in Visual C++. Oder ein link zu einer ordentlichen Doku hilft mir auch schon. Thnx4Help Zitieren
Net-srac Geschrieben 15. August 2001 Autor Geschrieben 15. August 2001 Hat hier wirklich keiner ne Idee? Hmm, naja dann mach ich halt hier den post, damit es wieder 5 min. auf der Mainpage zusehen ist *seufz* Zitieren
gajUli Geschrieben 15. August 2001 Geschrieben 15. August 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von FaFo: <STRONG>Hat hier wirklich keiner ne Idee? </STRONG> Zitieren
gugelhupf Geschrieben 16. August 2001 Geschrieben 16. August 2001 Also ich hab nen Zugriff auf nen SQL-Server über die Basisklasse CRecordset(ODBC) gemacht. Geh einfach in den Klassenassistenten und dann auf neue Klasse. Dann wirst aufgefordert die ODBC-DLL (Datenquelle) anzugeben. Dann wird ne Klasse erstellt die den Zugriff auf die Datenbank regelt. gruß gugel Zitieren
Crush1 Geschrieben 18. August 2001 Geschrieben 18. August 2001 Also ich habe mich mal an OCI versucht und rate jedem davon dringendst die Finger wegzulassen, weil man sonst graue Haare bekommt. Lieber normal über ODBC arbeiten oder meist einfacher sind die Hersteller-spezifischen Zugriffsklassen wie T-Net bei Oracle bei denen man die SQL-Befehle mit 2-3 Zeilen problemlos realisieren kann. Zitieren
Net-srac Geschrieben 21. August 2001 Autor Geschrieben 21. August 2001 Also ich weiß nicht wie, aber bei euch hört sich das irgendwie so einfach an. Ich hab das so hier gemacht und einen Assertion Failure erhalten als er über. m_pset->Open(...,...) gelaufen ist. Hier mein Code: void CWarenView::OnSuchen() { UpdateData(TRUE); CString szSQL; szSQL.Format( "SELECT EAN FROM art-kund WHERE EAN = \'%s\'", m_filterValue ); m_pSet->Open(CRecordset::dynamic,SZsql); int recCount = m_pSet->GetRecordCount(); if (recCount == 0) { MessageBox("No matching records."); m_pSet->Close(); m_pSet->m_strFilter = ""; m_pSet->Open(); } m_filterValue = " "; m_label = "Hallo Welt"; UpdateData(FALSE); } m_pSet->Definition CWarenSet* m_pSet; Seht ihr hier einen fehler?` Zitieren
gugelhupf Geschrieben 21. August 2001 Geschrieben 21. August 2001 hmmm...als allererstes fällt mir auf, daß du versucht mit GetRecordCount() die Anzahl der Einträge zu bekommen. Das geht erst wenn du den Zeiger auf die Datensätze auf das letzte Element gesetzt hast !!! MoveLast() oder ähnlich heißt das. Wenn das gemacht hast, dann bekommst die korrekte Anzahl an Datensätzen. Dann aber net vergessen mit MoveFirst() wieder nach vorn zu springen. In der MSDN steht das auch alles in laaaaaaaaaaaaangen Sätzen drin *GGGG* Zitieren
Net-srac Geschrieben 21. August 2001 Autor Geschrieben 21. August 2001 jaja, die gute alte MSDN. In welcher ließt du denn nach? Also ich seh da eh nicht durch, und werde auch bald kapitulieren Zitieren
Bubble Geschrieben 21. August 2001 Geschrieben 21. August 2001 Hi FaFo! Willst Du lieber mit den ODBC-Klassen der MFC arbeiten oder mit ADO oder OLEDB? Wie auch immer Du es machst, ist es im Prinzip aehnlich. HIer mail ein Beipiel, wenn Du die MFC ODBC Klassen verwendest: Ach ja, eine Verbindung zur Datanbank muss schon existieren, un die musst Du dem Constructor des CRecordset-Objektes uebergeben. Beispiel: CRecordset *rs; rs=new CRecordset(&MyConnection); try { rs->Open(CRecordset::dynaset,"select * from Tabelle"); rs->MoveFirst(); CString value; while(!rs->IsEOF()) { if(!rs->IsDeleted()) { rs->GetFieldValue("EinString",value); // Irgendwas machen } // Wenn man nur am 1. Ergebnis Interesse hat, kann man die // folgende Zeile weglassen: rs->MoveNext(); } rs->Close(); } catch(CDBException *e) { char msg[200]; e->GetErrorMessage(msg,200); printf("Fehler: %s\n",msg); } catch(CMemoryException *e) { char msg[200]; e->GetErrorMessage(msg,200); printf("Fehler: %s\n",msg); } delete rs; Zitieren
Crush Geschrieben 21. August 2001 Geschrieben 21. August 2001 Bentutzt eigentlich niemand mehr die Borland Database-Engine? Zitieren
Alrik Fassbauer Geschrieben 21. August 2001 Geschrieben 21. August 2001 Erinnert mich mit grausen an meine Projektarbeit - genau DAS Problem hatte ich nämlich auch mal. Nee, nee, mit Datenbanken unter MFC könnt ihr mich jagen ! (Dann schon lieber in Java ! ) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.