Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ODBC oder ADO in C++???

Empfohlene Antworten

Veröffentlicht

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

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*

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

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.

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?`

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*

jaja, die gute alte MSDN. In welcher ließt du denn nach? Also ich seh da eh nicht durch, und werde auch bald kapitulieren :(:(:(

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;

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.