vs2010 MFC /SQL server 几个问题

最近在看SQL server,想用MFC做的客户端访问远程的server,看到很多网友在问
数据库访问方式(ODBC ODBC(MFC) DAO OLEDB ADO)的区别。原理大概明白了,但是有些别的问题。

我们客户用的SQL server,但是没有告诉我需要用那种方式去连接server,
我想知道是不是不用知道什么方式,不管那种方式都可以访问server获取数据?
也也就是SQL server是不是默认支持这些协议,有没有哪位好心人能给科普下MFC和server的实施?

2个回答

是的,这些不同的方式都可以访问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库
}

https://www.cnblogs.com/royaldesigner/p/4129412.html

你直接搜c++或者mfc连接sql不就行了吗?图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问