QQ登录

只需一步,快速开始

上位机通过ADO动态创建数据源mdb文件与连接数据库

[ 复制链接 ]
使用微软ADO开发数据库步骤
一.引入ADO库。
ADO库收入的代码在后续编程中不常更改,可以放在stdafx.h预编译头文件中
代码如下:
#import "C:\\Program Files\\CommonFiles\\System\\ado\\msado15.dll"no_namespace \
rename("EOF","adoEOF")rename("BOF","adoBOF")
#importo为预处理指令 ,让程序在编译过程中引入 ADO动态库msado15.dll,此文件随系统安装在C:\\Program Files\\Common Files\\System\\ado\\。
no_namespace表示不使用命名空间。
rename("EOF","adoEOF")表示把ADO库中用到的EOF改成adoEOF,防止在我们编写程序中,命名冲突;
rename("BOF","adoBOF")与rename("EOF","adoEOF")同样的功能.
斜杠\表示换行输入,让全部代码在编程软件上可见;
二.初始化与连接ADO库
程序初始化时调用函数::CoInitialize(NULL);初始化ADO所需的COM环境。
程序退出时调用函数::CoUninitialize();清除COM环境资源;
定义Connection对象的智能指针变量_ConnectionPtrm_pConnect;再调用4.CreateInstance实例化对象m_pConnect.CreateInstance(__uuidof(Connection));
__uuidof关键字用于将Connection转换为其对应的CLSID;
调用Connection的成员函数open连接数据库。
try   {
_bstr_t strConnect ="rovider=Microsoft Access Driver(*.mdc)assword=123;UserID=456;DataSource=789.mdb; ";
m_pConnect->Open(strConnect,"","",-1);
}
catch (_com_error e){
AfxMessageBox(e.ErrorMessage());
}
Open的具体介绍可以MSDN搜索Open Method (Connection - ADO);
上面代码中strConnect是连接字符串,通过MSDN可找到具体使用介绍;
Password=123;UserID=456;是访问数据库的用户名与密码;
Open函数原形connection.Open ConnectionString, UserID, Password, Options;
ConnectionString   可选,字符串,包含连接信息。参阅 连接字符串属性可获得有效设置的详细信息。
UserID   可选,字符串,包含建立连接时所使用用户名。
Password   可选,字符串,包含建立连接时所使用密码。
Options   可选,ConnectOptionEnum 值。决定该方法是在连接建立之后(异步)还是连接建立之前(同步)返回。可以是如下某个常量;
Sourceoo为数据库。这里使用try,catch,来处理异常,如果不处理,ADO的异常可能会使程序崩溃。
其中数据源DataSource,在这里可以是mdb文件。这种数据文件可以事先由外部程序创建,也可以通过代码动态创建
   strcpy(cPath,sPath);
   sPath.Format("rovider='Microsoft.JET.OLEDB.4.0';DataSource='%s'",cPath);
   _bstr_t strcnn = sPath;
   ADOX::_CatalogPtr pCat;
   pCat.CreateInstance(__uuidof(ADOX::Catalog));
   pCat->Create(strcnn);
下面为例程关键代码:
  1. #import "C:\\Program Files\\Common Files\\System\\ado\\msadox.dll" \
  2. rename("EOF","adoEOF") rename("BOF","adoBOF")
  3. #import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll"no_namespace \
  4. rename("EOF","adoEOF") rename("BOF","adoBOF")
  5. #include <io.h>
复制代码

  1. void CADO::CreateMDB()
  2. {
  3.         char cPath[MAX_PATH];
  4.         GetModuleFileName(NULL,cPath,MAX_PATH);
  5.         CString sPath(cPath);
  6.         sPath=sPath.Left(sPath.ReverseFind('\\'));
  7.         sPath +="\\data\\Test.mdb";
  8.         if(!_access(sPath,0))
  9.                 return;//文件已存在
  10. ////创建MDB文件
  11.         strcpy(cPath,sPath);
  12.         sPath.Format("Provider='Microsoft.JET.OLEDB.4.0';Data Source='%s'",cPath);
  13.         _bstr_t strcnn = sPath;
  14.         ADOX::_CatalogPtr pCat;
  15.         pCat.CreateInstance(__uuidof(ADOX::Catalog));
  16.         pCat->Create(strcnn);
  17. //在MDB文件内创建用户与密码
  18. /*        ADOX::_UserPtr pUser;
  19.         pUser.CreateInstance(__uuidof(ADOX::User));  
  20.         pUser->PutName("gkbc8");  
  21.         pUser->ChangePassword("", "gkbc8Password");  
  22.         pCat->Users->Append(_variant_t((IDispatch *)pUser), "");  
  23.         pCat->Groups->Append("Accounting"); //创建用户组
  24.         pUser->Groups->Append("Accounting"); //归属到用户组*/
  25. ////在MDB文件内创建表格
  26.         ADOX::_TablePtr pTable;
  27.         pTable.CreateInstance(__uuidof(ADOX::Table));
  28.         pTable->PutName("NewTable");
  29.     pTable->Columns->Append("Column1",ADOX::adInteger,0);
  30.     pTable->Columns->Append("Column2",ADOX::adInteger,0);
  31.     pTable->Columns->Append("Column3",ADOX::adVarWChar,50);
  32.         pCat->Tables->Append( pTable.GetInterfacePtr() );

  33.         pTable =NULL;
  34.         pCat   =NULL;
  35. }
  36. CADO::CADO()
  37. {
  38.         ::CoInitialize(NULL);
  39.         m_pConnect.CreateInstance(__uuidof(Connection));
  40.         try        {
  41.                 CreateMDB();
  42.                 m_pConnect->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= data\\Test.mdb","","",adModeUnknown);
  43.         }
  44.         catch (_com_error e){
  45.                 AfxMessageBox(e.ErrorMessage());
  46.         }
  47. }
  48. CADO::~CADO()
  49. {
  50.         if(m_pConnect->State)
  51.                 m_pConnect->Close();
  52.         m_pConnect= NULL;
  53.         ::CoUninitialize();
  54. }
复制代码
请点击此处下载

查看状态:已购买或有权限

您的用户组是:游客

文件名称:上位机通过ADO动态创建数据源mdb文件与连接数据库.rar 
文件大小:104.54 KB 
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索