要做一个图书馆管理系统,后台需要数据库,可是从来没有尝试过用VC++与数据库连接,现在唯一的顾虑就是VC++与数据库连接的难度有多大,适合用什么数据库,请各位高手给点建议。我是大三的学生,这是我们软件工程老师给的一个小作业,现在想通过这个锻炼一下。

解决方案 »

  1.   

    简单点,用ADO连接好了。数据库无所谓。
      

  2.   

    【1】COM库的初始化
    可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:
    BOOL CADOTest1App::InitInstance()
    {
    AfxOleInit();
      ......【2】用#import指令引入ADO类型库
    在stdafx.h中加入如下语句
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
    这一语句的作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。几点说明:
    (1) 您的环境中msado15.dll不一定在这个目录下,请按实际情况修改
    (2) 在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。
    msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned【3】创建Connection对象并连接数据库
    首先我们需要添加一个指向Connection对象的指针:
    _ConnectionPtr m_pConnection;
    下面的代码演示了如何创建Connection对象实例及如何连接数据库并进行异常捕捉。
    BOOL CADOTest1Dlg::OnInitDialog()
    {
    CDialog::OnInitDialog();
    HRESULT hr;
    try
    {
    hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象 if(SUCCEEDED(hr))
    {
       hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=test.mdb","","",adModeUnknown);///连接数据库
    //上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;  
    }
       }
       catch(_com_error e)///捕捉异常
       {
       CString errormessage;
       errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
       AfxMessageBox(errormessage);///显示错误信息
       }
    }Try it!