使用 Visual Studio 2008 使用 C++ 连接到 MS Access 数据库

2024-02-04

我需要一些认真的帮助来尝试使用 VS 2008 的 C++ 连接到 Access 数据库。我已经在 C# 中做到了这一点,但我无法在 C++ 中弄清楚这一点。我需要使用 C++ 进行连接,因为我正在使用预编译的 C++ 代码获取数据。我真的很感激一些帮助。谢谢 我想要 odbc,但如果您有其他建议,那么我可以改变主意。我正在尝试按照以下示例连接到 Access 数据库(Northwind 示例数据库),

http://msdn.microsoft.com/en-us/library/cc811599.aspx 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  

任何帮助,将不胜感激。

谢谢 但丁


好吧,已经有一段时间了,但你将需要类似的东西:http://msdn.microsoft.com/en-us/library/ms714562%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/ms714562%28v=vs.85%29.aspx,看看 SQLConnect...,主题有很多变体,但第二个参数基本上是访问数据库(*.mdb)文件的路径。

祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Visual Studio 2008 使用 C++ 连接到 MS Access 数据库 的相关文章

  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • Qt - 无法让 lambda 工作[重复]

    这个问题在这里已经有答案了 我有以下功能 我想在其中修剪我的std set
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • std::bind 重载解析

    下面的代码工作正常 include
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据

随机推荐