最近在看SQL server,想用MFC做的客户端访问远程的server,看到很多网友在问
数据库访问方式(ODBC ODBC(MFC) DAO OLEDB ADO)的区别。原理大概明白了,但是有些别的问题。
我们客户用的SQL server,但是没有告诉我需要用那种方式去连接server,
我想知道是不是不用知道什么方式,不管那种方式都可以访问server获取数据?
也也就是SQL server是不是默认支持这些协议,有没有哪位好心人能给科普下MFC和server的实施?
最近在看SQL server,想用MFC做的客户端访问远程的server,看到很多网友在问
数据库访问方式(ODBC ODBC(MFC) DAO OLEDB ADO)的区别。原理大概明白了,但是有些别的问题。
我们客户用的SQL server,但是没有告诉我需要用那种方式去连接server,
我想知道是不是不用知道什么方式,不管那种方式都可以访问server获取数据?
也也就是SQL server是不是默认支持这些协议,有没有哪位好心人能给科普下MFC和server的实施?
是的,这些不同的方式都可以访问sql server,这些不是“协议”,而是客户端api,不同的api下面是所谓提供程序(provider),提供程序通过不同数据库的协议和服务器通讯。但是推荐你用的方式是ADO
下面是一个简单的例子,一般来说,不同的sql server版本,只有提供程序和用户名密码(统称为连接字符串)不同,别的都不需要改
在stdafx.h中导入该库
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
void CAdoDlg::OnBtnQuery()
{
// TODO: Add your control notification handler code here
CoInitialize(NULL); //初始化COM库
_ConnectionPtr pConn(__uuidof(Connection)); //定义一个ADO Connection对象:pConn,并初始化
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));
try{
pConn->ConnectionString = "Provider=SQLOLEDB.1; User ID=sa; Password=12345678; Initial Catalog=Stock; Data Source=.;"; //连接字符串
pConn->Open(pConn->ConnectionString,"","",adConnectUnspecified);
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
//pRst = pConn->Execute("select * from t_check_sn_list",NULL,adCmdText);
//pRst->Open("select * from t_check_sn_list",_variant_t((IDispatch*)pConn),adOpenDynamic,adLockOptimistic,adCmdText);
pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
//pCmd->CommandText = "select * from t_check_sn_list";
pCmd->CommandText = "select * from Users";
pRst = pCmd->Execute(NULL,NULL,adCmdText);
while(!pRst->rsEOF){
((CListBox*)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("Pwd")); //SeqNum为表t_check_sn_list的一列
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize(); //卸载COM库
}