Zum Inhalt springen

ODBC oder ADO in C++???


Net-srac

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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*

Link zu diesem Kommentar
Auf anderen Seiten teilen

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;

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...