Подключите и вставьте данные в таблицу MS Access, используя C ++ - PullRequest
1 голос
/ 28 июня 2011

Я работаю над проектом, который требует от меня выполнения запроса вставки в таблицу MS Access.Я искал везде в Интернете, но, похоже, ничего не работает.Любая помощь будет принята с благодарностью.Кроме того, я должен написать это для VS2008 и Visual C ++ 6.0.Спасибо

Ответы [ 2 ]

1 голос
/ 28 июня 2011

У вас есть (слишком много) много вариантов: ADO / RDO , DAO , ODBC и OLE DB , чтобы назвать только несколько. DAO официально устарела. Официально ADO / RDO нет, но MS, похоже, больше их не заботит. С VC 6, однако, морально устарела - это в значительной степени факт жизни. Я полагаю, что они все еще поддерживаются, по крайней мере, до некоторой степени в VS 2008, но в них, например, больше нет мастеров, помогающих использовать DAO.

Это в основном оставляет OLE DB и ODBC в качестве вашей первой пары вариантов. MS по-прежнему активно поддерживает и развивает их, а другие вряд ли смогут обеспечить какое-либо серьезное преимущество.

Я должен добавить, что VC ++ 6.0 предоставляет немало функций, отсутствующих в VS2008 для написания приложений, использующих базы данных. Возможно, вы захотите взглянуть на то, что я показал в предыдущем вопросе для получения некоторых указаний.

0 голосов
/ 03 августа 2018

Использовать ODBC . Пример подключения к базе данных и выполнения запроса INSERT:

#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#include <sqlext.h>

WCHAR szDSN[] = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\users.mdb";

int _tmain(int argc, _TCHAR* argv[])
{    

HENV    hEnv;
HDBC    hDbc;

/* ODBC API return status */
RETCODE rc;

int     iConnStrLength2Ptr;
WCHAR    szConnStrOut[256];

WCHAR* query = L"INSERT INTO [Users] (name,surname) VALUES ('John','Smith');";

HSTMT           hStmt;

/* Allocate an environment handle */
rc = SQLAllocEnv(&hEnv);
/* Allocate a connection handle */
rc = SQLAllocConnect(hEnv, &hDbc);

/* Connect to the database */
rc = SQLDriverConnect(hDbc, NULL, (WCHAR*)szDSN, 
    SQL_NTS, (WCHAR*)szConnStrOut, 
    255, (SQLSMALLINT*)&iConnStrLength2Ptr, SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(rc)) 
{

    wprintf(L"Successfully connected to database. Data source name: \n  %s\n", 
        szConnStrOut);  

    /* Prepare SQL query */
    wprintf(L"SQL query:\n  %s\n", query);

    rc = SQLAllocStmt(hDbc,&hStmt);
    rc = SQLPrepare(hStmt, query, SQL_NTS);   

    /* Excecute the query */
    rc = SQLExecute(hStmt); 
    if (SQL_SUCCEEDED(rc)) 
    {
        wprintf(L"SQL Success\n");
    }
    else{
        wprintf(L"SQL Failed\n");
    }
}
else
{
    wprintf(L"Couldn't connect to %s.\n",szDSN);
}

/* Disconnect and free up allocated handles */
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);

getchar();
return 0;
}

Источник: https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2007/cc811599(v=office.12)

...