ADOX创建ACCESS数据库

好久不见. 提交于 2019-12-13 11:58:30

本文转自:https://blog.csdn.net/suhuaiqiang_janlay/article/details/5943688 经整理后发布

用ADOX创建access数据库方法很简单,只需要创建一个Catalog对象,然后调用它的Create方法就可以了。

例程ADOXCreateDatabase演示如何使用ADOX创建一个ACCESS数据库。

打开VC++ 6.0,新建一个基于对话框的工程ADOXCreateDatabase。在对话框IDD_ADOXCREATEDATABASE_DIALOG中添加一个编辑框IDC_DBNAME和一个按钮IDC_BTN_CREATE,编辑框用以输入数据库名称。

使用ClassWizard给编辑框创建一个CString变量m_dbName。

双击IDC_BTN_CREATE按钮,并编辑OnBtnCreate()函数如下:

void CADOXCreateDatabaseDlg::OnBtnCreate() 
{
    //使输入到编辑框IDC_DBNAME的内容更新到m_dbName变量中
    UpdateData(TRUE);

    CString str;
    str = "d:// "+ m_dbName +" .mdb";

    //检查该数据库是否已经存在,如果该数据库已经存在,弹出消息框,返回
    //使用API函数PathFileExists()检查路径文件是否存在
    //请注意:为了使用API函数PathFileExists(),需要加入
    //#include "Shlwapi.h"
    //#pragma comment(lib,"shlwapi.lib")

    if(PathFileExists(str))
    {
       CString strTemp;
       strTemp.Format("%s已存在!", str);
       AfxMessageBox(strTemp);
       return;
    }

    //定义ADOX对象指针并初始化为NULL
    //用ADOX创建access数据库方法很简单,
    //只需要新建一个Catalog对象,然后调用它的Create方法就可以了。
    //Catalog是 ADOX 的一个对象,它包含描述数据源模式目录的集合。
    //在这里,您只需知道创建数据库时使用这个对象就可以了。
    //注意用try...catch组合捕捉错误

    _CatalogPtr m_pCatalog = NULL;
    CString DBName = "Provider = Microsoft.JET.OLEDB.4.0;Data source = ";
    DBName = DBName + str;

    try
    {
       m_pCatalog.CreateInstance(__uuidof(Catalog));
       m_pCatalog->Create(_bstr_t((LPCTSTR)DBName));
    }
    catch(_com_error &e)
    {
       AfxMessageBox(e.ErrorMessage());
       return;
    }   
}

使用ADOX,需要引入ADOX的动态链接库msadox.dll,即在stdafx.h中加入如下语句:

#import "C:/Program Files/Common Files/system/ado/msadox.dll" no_namespace rename("EOF","adoEOF")

另外,ADOX属于COM对象,所以要在CADOXCreateDatabaseApp::InitInstance()函数中加入:   

 if(!AfxOleInit())
 {
    AfxMessageBox("OLE初始化出错!");
    return FALSE;
}

初始化COM。

好了,编译并运行该例程,对于编译过程中弹出的4146号警告不要理会。在编辑框中输入一个数据库名称,点击“创建数据库”按钮,该数据库将在d盘根目录下创建,再次输入该数据库名称并点击“创建数据库”按钮,将弹出警告对话框。

在vc中使用ADO的时候会得到4146号警告信息,我们可以不去理会,也可以通过#pragma warning指令解决,方法为:

将在stdafx.h中加入的语句:

#import "C:/Program Files/Common Files/system/ado/msadox.dll" no_namespace rename("EOF","adoEOF")

前后再加一条语句,修改后为:

#pragma warning (disable:4146)
#import "C:/Program Files/Common Files/system/ado/msadox.dll" no_namespace rename("EOF","adoEOF")
#pragma warning (default:4146)

指令#pragma warning (disable:4146) 暂时屏蔽编译时4146警告信息

指令#pragma warning (default:4146) 重置编译器的4146警告到默认状态

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!