@nicola
В Microsoft Visual C++ для работы с базами данных можно использовать технологии ADO (ActiveX Data Objects) и ODBC (Open Database Connectivity).
- ADO:
Для работы с ADO нужно выполнить следующие шаги:
- Подключить библиотеку ADO: #import "C:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF", "adoEOF")
- Создать объекты ADO: CoInitialize(NULL); _RecordsetPtr pRecordset("ADODB.Recordset"); _ConnectionPtr pConnection("ADODB.Connection");
- Установить строку подключения к базе данных: pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:mydb.mdb");
- Выполнить SQL-запрос и получить результат: pRecordset->Open("SELECT * FROM mytable", pConnection.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText); while (!pRecordset->adoEOF) { //обработка записей }
- ODBC:
Для работы с ODBC нужно выполнить следующие шаги:
- Подключить библиотеку ODBC: #include <windows.h> #include <sql.h> #include <sqlext.h>
- Создать объекты ODBC: SQLHANDLE henv = SQL_NULL_HANDLE, hdbc = SQL_NULL_HANDLE, hstmt = SQL_NULL_HANDLE; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
- Установить строку подключения к базе данных: SQLCHAR* connStr = (SQLCHAR*)"DSN=myodbc;UID=myuser;PWD=mypass"; SQLRETURN retcode = SQLDriverConnect(hdbc, NULL, connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
- Выполнить SQL-запрос и получить результат: SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM mytable", SQL_NTS); while (SQLFetch(hstmt) == SQL_SUCCESS) { //обработка записей }
Оба подхода имеют свои достоинства и недостатки, поэтому выбор конкретной технологии зависит от требований к проекту и собственных предпочтений.