Подключение к базе данных MS Access с использованием C ++ с использованием Visual Studio 2008 - PullRequest
2 голосов
/ 22 июня 2011

Мне нужна серьезная помощь при попытке подключиться к базе данных Access с использованием C ++ VS 2008.Я сделал это в C #, но я не могу понять это в C ++.Мне нужно использовать C ++ для соединения, потому что я собираю данные, используя предварительно скомпилированный код C ++.Я был бы очень признателен за помощь в этом.Спасибо, я хотел бы odbc, но если у вас есть другая рекомендация, я мог бы передумать. Я пытаюсь подключиться к базе данных Access, образцу базы данных Northwind, следуя этому примеру,

http://msdn.microsoft.com/en-us/library/cc811599.aspx

Я использую ОС Windows 7 с Visual C ++ 2008 для компилятора и IDE.Программа представляет собой консольное приложение.Этот пример указан для типов файлов Access 2007 .accdb.Как только я запустил его правильно, я переключу имя пути, запросы и имена таблиц в свою базу данных.Ниже приведен код, который не удается построить.Я не знаю, что вызывает это:

Includes-->
   fstream
cmath
complex
iostream
iomanip
vector
limits
stdlib.h
stdio.h
time.h
fcntl.h
string.h
ctype.h
icrsint.h

using namespace std;



#import C:\\Program Files\\Common Files\\system\\ado\\msado15.dll rename("EOF",
      "AdoNSEOF")

_bstr_t bstrConnect="Provider=Microsoft.ACE.OLEDB.12.0;Data " 
                    "Source=C:\\Users\\lriley\\Documents\\Northwind 2007.mdb;";

HRESULT hr;

int main()
{
::CoInitialize(NULL);
const char* DAM = "ADO";

ADODB::_ConnectionPtr pConn("ADODB.Connection");
hr = pConn->Open(bstrConnect, "admin", "", ADODB::adConnectUnspecified);
if(SUCCEEDED(hr))
{
    cout<<DAM<<": Successfully connected to database. Data source name:\n  "
        <<pConn->GetConnectionString()<<endl;

    // Prepare SQL query
    _bstr_t query = "SELECT Customers.[Company], Customers.[First Name] FROM "
                            "Customers;";
    cout <<DAM<<": SQL query \n  "<<query<<endl;

    // Execute
    ADODB::_RecordsetPtr pRS("ADODB.Recordset");
    hr = pRS->Open(query,
        _variant_t((IDispatch *) pConn, true),
        ADODB::adOpenUnspecified,
        ADODB::adLockUnspecified,
        ADODB::adCmdText);
    if(SUCCEEDED(hr))
    {
        cout<<DAM<<": Retrieve schema info for the given result set: "<< endl;
        ADODB::Fields* pFields = NULL;
        hr = pRS->get_Fields(&pFields);
        if(SUCCEEDED(hr) && pFields && pFields->GetCount() > 0)
        {
            for(long nIndex=0; nIndex < pFields->GetCount(); nIndex++)
            {
                cout << " | "<<_bstr_t(pFields->GetItem(nIndex)->GetName());
            }
            cout << endl;
        }
        else
        {
            cout << DAM << ": Error: Number of fields in the " <<
                           "result is set to zero." << endl;
        }
        cout<<DAM<<": Fetch the actual data: " << endl;
        int rowCount = 0;
        while (!pRS->AdoNSEOF)
        {
            for(long nIndex=0; nIndex < pFields->GetCount(); nIndex++)
            {
                cout<<" | "<<_bstr_t(pFields->GetItem(nIndex)->GetValue());
            }
            cout<< endl;
            pRS->MoveNext();
            rowCount++;
        }
        cout<<DAM<<": Total Row Count:  " << rowCount << endl;
    }
    pRS->Close();
    pConn->Close();
    cout<<DAM<<": Cleanup Done" << endl;
}
else
{
    cout<<DAM<<" : Unable to connect to data source: "<<bstrConnect<<endl;
}
::CoUninitialize();
return 0;
}

Я получаю следующую ошибку при попытке ее построить:

fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add #include "stdafx.h" to your source?   

c:\users\lriley\documents\visual studio 2008\projects\test12\test12\test12.cpp  

Любая помощь будет оценена.

Спасибо, Данте

Ответы [ 2 ]

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

Ну, это было давно, но вам понадобится что-то вроде: http://msdn.microsoft.com/en-us/library/ms714562%28v=vs.85%29.aspx, посмотрите на SQLConnect ..., множество вариаций темы, но 2-й параметр - это путь к вашей Доступ к файлу БД (* .mdb).

удачи.

0 голосов
/ 30 июля 2013

Вы просто должны указать свойства файла *. Cpp

-> Предварительно скомпилированные заголовки - без предварительно скомпилированных заголовков

Использовать предварительно скомпилированный заголовочный файл - Stdafx.h xxxx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...