logo资料库

MFC中使用ADO连接SQL Server 2008 R2.docx

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
MFC 中使用 ADO 连接 SQL Server 2008 R2 一、在工程中添加一个 MFC 类 ADO_Database,当然,你可以定义一个别的类 名,只要这个类名是合法的 二、在解决方案中找到 ADO_Database.h 文件,并在这个文件中进行一下步骤: 1、在头文件的最开始添加以下代码 #import "C:\Program Files\Common Files\System\ado\msado15.dll" \ no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF") 2、在 public 中 //添加一个指向 Connection 对象的指针 _ConnectionPtr m_pConnection; //添加一个指向 Recordset 对象的指针 _RecordsetPtr m_pRecordset; 3、在 public 中 //添加三个函数 void OnInitADOConn(void);//连接到数据库 void ExitConnect(void);//与数据库断开连接 _RecordsetPtr GetRecordSet(_bstr_t bstrSQL);//获取数据集 三、在解决方案中找到 ADO_Database.cpp 文件,并在文件中进行以下步骤: 1、实现连接数据库方法 void ADO_Database::OnInitADOConn(void) { //初始化 OLE/COM 库环境 ::CoInitialize(NULL); try
{ //创建 connection 对象 m_pConnection.CreateInstance("ADODB.Connection"); //设置 SQL Server 的连接字符串,其中 Initial Catalog 为数据库名 称,Data Source 为//服务器名称,Open 函数的第 2、3 个参数分别为数据库的 用户名和密码 _bstr_t strConnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=NetWork_gobang;Data Source=TabbyCat-PC"; m_pConnection->Open(strConnect, "Project", "Project", adModeUnknown); } //捕捉异常 catch (_com_error e) //显示错误信息 AfxMessageBox(e.Description()); { } } 2、实现与数据库断开连接方法 void ADO_Database::ExitConnect(void) { //关闭记录集和连接 if (m_pRecordset != NULL) m_pRecordset->Close();
m_pConnection->Close(); //释放环境 ::CoUninitialize(); } 3、实现获取数据集方法 _RecordsetPtr ADO_Database::GetRecordSet(_bstr_t bstrSQL) { try { //连接数据库,如果 connection 对象为空,则重新连接数据库 if (m_pConnection == NULL) OnInitADOConn(); //创建记录集对象 m_pRecordset.CreateInstance(__uuidof(Recordset)); //取得表中的记录 m_pRecordset->Open(bstrSQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch (_com_error e) { } e.Description(); //返回记录集
return m_pRecordset; } 四、调用方法进行数据库操作 1、在头文件中引用并声明 #include "ADO_Database.h" ADO_Database m_adodatabase;//定义数据库对象 2、使用方法实现数据库的连接、操作和关闭 m_adodatabase.OnInitADOConn();//连接到数据库 CString sql; sql.Format(L"select* from Information");// Information 为数据表的名称 _RecordsetPtr m_pRecordset; //打开记录集 m_pRecordset = m_adodatabase.GetRecordSet((_bstr_t)sql); try { m_pRecordset->AddNew(); m_pRecordset->PutCollect("time", (_bstr_t)svtm);//向数据库中添 加 CString 类型的数//据 m_pRecordset->PutCollect("id", tcpPackage.id);//向数据库中添加 int 类型的数据 m_pRecordset->Update(); m_adodatabase.ExitConnect();//断开与数据库的连接 } catch (...)
{ } AfxMessageBox(L"写入数据失败!"); return;
分享到:
收藏