Experten: Datenbanken - CRecordset, wie dynamisch Feldern Werte zuweisen?
-
im ernst?
kannst mal Codeauszüge posten? Bei mir gabs beim Open immer Exceptions das keine Verbinung zu den Inhalten besteht oder so ein Rotz ...
-
Funktioniert einwandfrei:
void CMySQLTestDlg::OnBnClickedButton1() { CDatabase db; CString subject; CString ODBC; CString driver; driver = "MySQL ODBC 3.51 Driver"; CString sql ; sql.Format ( "DRIVER={%s};SERVER=127.0.0.1;DATABASE=cpp;UID=root;PASSWORD=pw;READONLY=FALSE;", driver) ; db.OpenEx(sql,CDatabase::noOdbcDialog); if (!db.IsOpen()){ AfxMessageBox("Fehler beim Verbinden"); }else{ CRecordset rs( &db); rs.Open(rs.snapshot, _T("SELECT * FROM testtable")); while(!rs.IsEOF()) { CString sValue; rs.GetFieldValue(0, sValue); MessageBox(sValue); rs.Delete(); rs.MoveNext(); } rs.Close(); }db.Close(); }
-
erstmal thx,
vielleicht liegts ja daran das ich Open und nicht OpenEx benutz habe, na mal sehen
-
Vorsicht, mit OpenEx hatte ich noch ungeklärte Probleme: http://www.c-plusplus.net/forum/viewtopic-var-t-is-116639.html
-
hast du eine lösung dafür gefunden?
-
Nur die, die ich auch gepostet habe.
Und das Erstellen der Datenquelle mache ich momentan wieder von Hand, das funktioniert wenigstens.
-
kann ich mal bitte den Src sehen?
-
sagt mal was ist die Kombi CDatabase/CRecordset für ein unflexibler Müll? CRecordset kennt kein SetFieldValue...ok schlimm genug, aber umgehbar.
Jetzt kennt es GetFieldValue, aber NICHT GetFieldCount...was soll das denn bitte?
soll ich while(1){
if(!GetFieldInfo(n))
break;n++;
}o.ä. machen oder was? Kennt ihr eine Möglichkeit oder das dazugehörige SQL-Statement, wenns CRecordset schon nicht kann?
Danke,
Gruß,
Kevin//EDIT:
Wer lesen kann ist klar im Vorteil:
GetODBCFieldCount
-
@Surkevin: Schau in den verlinkten Post, Seite 3.
Oder soll ich es dir herkopieren?
-
-
wer benutzt von euch ein mapping um werte in die tabelle zu bringen bzw upzudaten?
also ich finde db_mapping sehr gut