使用微软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); 下面为例程关键代码: - #import "C:\\Program Files\\Common Files\\System\\ado\\msadox.dll" \
- rename("EOF","adoEOF") rename("BOF","adoBOF")
- #import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll"no_namespace \
- rename("EOF","adoEOF") rename("BOF","adoBOF")
- #include <io.h>
复制代码
- void CADO::CreateMDB()
- {
- char cPath[MAX_PATH];
- GetModuleFileName(NULL,cPath,MAX_PATH);
- CString sPath(cPath);
- sPath=sPath.Left(sPath.ReverseFind('\\'));
- sPath +="\\data\\Test.mdb";
- if(!_access(sPath,0))
- return;//文件已存在
- ////创建MDB文件
- strcpy(cPath,sPath);
- sPath.Format("Provider='Microsoft.JET.OLEDB.4.0';Data Source='%s'",cPath);
- _bstr_t strcnn = sPath;
- ADOX::_CatalogPtr pCat;
- pCat.CreateInstance(__uuidof(ADOX::Catalog));
- pCat->Create(strcnn);
- //在MDB文件内创建用户与密码
- /* ADOX::_UserPtr pUser;
- pUser.CreateInstance(__uuidof(ADOX::User));
- pUser->PutName("gkbc8");
- pUser->ChangePassword("", "gkbc8Password");
- pCat->Users->Append(_variant_t((IDispatch *)pUser), "");
- pCat->Groups->Append("Accounting"); //创建用户组
- pUser->Groups->Append("Accounting"); //归属到用户组*/
- ////在MDB文件内创建表格
- ADOX::_TablePtr pTable;
- pTable.CreateInstance(__uuidof(ADOX::Table));
- pTable->PutName("NewTable");
- pTable->Columns->Append("Column1",ADOX::adInteger,0);
- pTable->Columns->Append("Column2",ADOX::adInteger,0);
- pTable->Columns->Append("Column3",ADOX::adVarWChar,50);
- pCat->Tables->Append( pTable.GetInterfacePtr() );
- pTable =NULL;
- pCat =NULL;
- }
- CADO::CADO()
- {
- ::CoInitialize(NULL);
- m_pConnect.CreateInstance(__uuidof(Connection));
- try {
- CreateMDB();
- m_pConnect->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= data\\Test.mdb","","",adModeUnknown);
- }
- catch (_com_error e){
- AfxMessageBox(e.ErrorMessage());
- }
- }
- CADO::~CADO()
- {
- if(m_pConnect->State)
- m_pConnect->Close();
- m_pConnect= NULL;
- ::CoUninitialize();
- }
复制代码
|