VS2012
1、初始化ADO,创建连接对象
//hpp头文件里导入ADO //导入ADO动态链接库 #import "C:Program FilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF", "adoEOF")
public:
//连接
_ConnectionPtr m_pConnectionA;
_ConnectionPtr m_pConnectionB;
//cpp文件OnInitDialog()里初始化ADO
//初始化ADO
HRESULT hr;
try
{
hr = CoInitialize(NULL);
//检查初始化是否成功
if (SUCCEEDED(hr))
{
AfxMessageBox("初始化ADO COM成功!");
}
else
{
AfxMessageBox("初始化ADO COM失败!");
}
//创建连接对象A
if(!SUCCEEDED(m_pConnectionA.CreateInstance(__uuidof(Connection))))
{
m_pConnectionA = NULL;
AfxMessageBox("创建连接对象失败");
return TRUE;
}
//创建连接对象B
if(!SUCCEEDED(m_pConnectionB.CreateInstance(__uuidof(Connection))))
{
m_pConnectionB = NULL;
AfxMessageBox("创建连接对象失败");
return TRUE;
}
}
catch (_com_error e)
{
CString errormessage;
errormessage.Format("%s"), e.ErrorMessage();
AfxMessageBox(errormessage);
}
2、创建界面
3、写代码
void CDemoDlg::OnBnClickedButtonOpenSql() { // TODO: 在此添加控件通知处理程序代码 //检查连接的状态 if (m_pConnectionA->State & adStateOpen) { AfxMessageBox("SqlServer连接已经打开"); return; } //打开SqlServer数据库连接 CString strConnect = "Provider=SQLOLEDB;Server=192.168.1.2;Database=test;uid=sa;pwd=Lu123456;"; HRESULT hr = m_pConnectionA->Open(_bstr_t(strConnect),"","",adConnectUnspecified); if (SUCCEEDED(hr)) { AfxMessageBox("打开SqlServer连接成功"); } else { AfxMessageBox("打开SqlServer连接失败"); } } void CDemoDlg::OnBnClickedButtonCloseSql() { // TODO: 在此添加控件通知处理程序代码 //检查关闭的状态 if (!m_pConnectionA->State & adStateOpen) { AfxMessageBox("未打开SqlServer连接"); return; } //关闭连接 if (SUCCEEDED(m_pConnectionA->Close())) { AfxMessageBox("关闭SqlServer连接成功"); } else { AfxMessageBox("关闭SqlServer连接失败"); } } void CDemoDlg::OnBnClickedButtonOpenAccess() { // TODO: 在此添加控件通知处理程序代码 //检查连接的状态 if (m_pConnectionB->State & adStateOpen) { AfxMessageBox("Access连接已经打开"); return; } //打开Access数据库连接 CString strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Demo.mdb"; HRESULT hr = m_pConnectionB->Open(_bstr_t(strConnect),"","",adConnectUnspecified); if (SUCCEEDED(hr)) { AfxMessageBox("打开Access连接成功"); } else { AfxMessageBox("打开Access连接失败"); } } void CDemoDlg::OnBnClickedButtonCloseAccess() { // TODO: 在此添加控件通知处理程序代码 //检查关闭的状态 if (!m_pConnectionB->State & adStateOpen) { AfxMessageBox("未打开Access连接"); return; } //关闭连接 if (SUCCEEDED(m_pConnectionB->Close())) { AfxMessageBox("关闭Access连接成功"); } else { AfxMessageBox("关闭Access连接失败"); } }
4、演示
5、执行select语句
void CDemoDlg::OnBnClickedButtonSelect() { // TODO: 在此添加控件通知处理程序代码 //ADO读数据库 CoInitialize(NULL);//初始化ADO _ConnectionPtr pConn(__uuidof(Connection)); _RecordsetPtr pRst(__uuidof(Recordset));//创建记录集对象 pConn->ConnectionString = "Provider=SQLOLEDB;Server=192.168.1.2;Database=test;uid=sa;pwd=Lu123456"; pConn->Open("", "", "", adConnectUnspecified);//连接ADO //执行select语句 pRst = pConn->Execute("select * from student", NULL, adCmdText); while (!pRst->adoEOF) { ((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("name"));//指定列名 pRst->MoveNext(); } pRst->Close();//关闭记录集 pConn->Close();//关闭数据库的连接 pRst.Release();//释放 pConn.Release(); CoUninitialize();//卸载 } void CDemoDlg::OnBnClickedButtonClear() { // TODO: 在此添加控件通知处理程序代码 ((CListBox*)GetDlgItem(IDC_LIST1))->ResetContent();//清空列表框 }
Caesar卢尚宇
2021年1月9日