Access, ODBC und das leidige Thema Programmierung :)
-
moin erstmal,
als Grundlage für mein programm muss ich daten in einer access datenbank speichern. für informationen dazu bin ich schon fast über leichen gegangen (unser inet is kurzzeitig abgekackt
). wie auch immer, ich bin zwar fündig gewordern, aber entweder, handelte es sich um mfc-code oder sonstiges absolut dirty und undokumentiertes zeug... Der artikel hier war ja noch recht interessant, aber dennoch irgendwie problematisch:
http://www.c-plusplus.net/forum/viewtopic.php?t=54432soweit bin ich inzwischen gekommen:
SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", "CREATE_DB=klapptehnet.mdb");jetzt stellt sich die frage, wie es weitergeht. verbinden oder erst speicherreservieren? und so weiter... . ich würde jetzt in richtung SQLAllocHandle ... tendieren, aber wie wende ich das vernünftig an?
(btw, falls einer eine bessere methode hat, viele datensätze vernünftig lokal zu speichern - ich bin offen für vorschläge...
)in diesem sinne... .
eagle2k
-
Hallo,
am besten liest du dir einmal die grundlegenden Schritte durch:
http://msdn.microsoft.com/library/en-us/odbc/htm/odch05pr.asp
und dann sehen wir weiter...
Es gibt noch andere Möglichkeiten, um auf ACCESS zuzugreifen, z.B. über ADO, aber ODBC ist sicher das einfachste, wenn es um WinAPI-C-Programmierung geht
MfG
-
das war schonmal nicht schlecht fürs verständnis, aber wirklich funktionieren tut es dennoch nicht. hier is mal mein aktueller code: (bitte nicht lachen
)RETCODE rc; SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", "CREATE_DB=musicdata.mdb") ; // http://msdn.microsoft.com/library/en-us/odbc/htm/odch06pr_1.asp: SQLHENV henv; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_UINTEGER); // http://msdn.microsoft.com/library/en-us/odbc/htm/odch06pr_4.asp: SQLHDBC hdbc; SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); // http://www.c-plusplus.net/forum/viewtopic.php?t=54432: char dsn[10] = {"test"}; SQLConnect(hdbc, (SQLCHAR *)dsn, NULL, NULL, NULL, NULL, NULL); SQLHANDLE hstmt; SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt); SQLPrepare(hstmt, (SQLCHAR *)"insert into tbltest (text) values ('gagga');", SQL_NTS); SQLExecute(hstmt); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv);hilft sowas weiter oder bin ich völlig auf dem holzweg gelandet?
irgendwie kann ich nicht glauben, dass der erste SQL aufruf (SQLConfigDataSource) irgendwas mit dem rest zutun hat, denn es kommen zwar keine fehler, aber in die datenbank wird nicht wirklich was hinzugefügt... .