Zum Inhalt springen

ODBC oder ADO in C++???


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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*

Geschrieben

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;

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...