急!我想在mfc中使用ADO连接sql server数据库,如何设置,怎么连接,怎么建表,多谢!
小弟头一次作,不懂得太多。
请问建立库的时候是不是直接在sql server中建立?还是在mfc中建立?
建立数据库之后需要进行什么设置吗?还是直接在程序中链接数据库就可以?我的意思是是否需要像ODBC那样进行设置?

解决方案 »

  1.   

    建议楼主先所T-Sql 语言学一下,这些问题就简单了
      

  2.   

    建议楼主先把T-Sql 语言学一下,这些问题就简单了
      

  3.   


    楼主需要看两本书:1、『Microsoft SQL SERVER 2000』(了解和使用DBMS)2、孙鑫老师的『VC++深入详解』(使用VC++进行开发)
      

  4.   


    class CADOConn  //连接和操作数据库的类
    {
    public:
    CADOConn();
    virtual ~CADOConn();
    bool OnInitADOConn();
    _RecordsetPtr GetRecordset(_bstr_t bstrSQL);
    bool ExecuteSql(_bstr_t bstrSql);
    void ExitConnect();
    public:
    _ConnectionPtr m_pConnection;
    _RecordsetPtr m_pRecordset;};CADOConn::CADOConn()
    {}CADOConn::~CADOConn()
    {}
    bool CADOConn::OnInitADOConn()//连接数据库
    {
    ::CoInitialize(NULL);
    try
    {
    m_pConnection.CreateInstance("ADODB.Connection");
    _bstr_t strConnect="Driver={SQL Server};Server=(local);Database=CountMark;UID=xiaofeng;PWD=123";
    m_pConnection->Open(strConnect,"","",adModeUnknown);
    }
    catch (_com_error e)
    {
    AfxMessageBox(e.Description());
    return false;
    }
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    return true;
    }
    _RecordsetPtr CADOConn::GetRecordset(_bstr_t bstrSql)//得到记录集类
    {
    try{ if(m_pConnection==NULL)
    OnInitADOConn();
    m_pRecordset->Open(bstrSql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); }
    catch(_com_error e)
    {
    AfxMessageBox(e.Description()+"查询记录失败!");
    }
    return m_pRecordset;
    }
    bool CADOConn::ExecuteSql(_bstr_t strsql)//查询
    {
    try
    {
    if(m_pConnection==NULL)
    OnInitADOConn();
    m_pConnection->Execute(strsql,NULL,adCmdText);
    return true;
    }
    catch(_com_error e)
    {
    AfxMessageBox(e.Description());
    return false;
    }
    }
    void CADOConn::ExitConnect()//断开连接
    {
    if(m_pRecordset==NULL)
    m_pRecordset->Close();
    m_pConnection->Close();
    ::CoUninitialize();
    }
    //使用这个类就可以像 odbc中一样 而且比较灵活,不需要配置数据源 
      

  5.   

    楼上的方法是不错,如果你会调用的话.但是如果是初学者我觉得还是自己去写比较好,那样你会学到很多东西,编程重在思想,有了思路来什么样的问题都能解决,封装是不错,但个人觉得不适合初学者,还是要靠自己去专.关于ADO连接数据库的事例网上非常非常多,自己动手做做,会有收获的.提示一个重点就是连接数据库的语句比较麻烦点,_bstr_t strConnect="Driver={SQL Server};Server=(local);Database=CountMark;UID=xiaofeng;PWD=123";他这个是本地的,如果是远程的话,那就要把SERVER换成IP了.慢慢研究吧,哈啊.
      

  6.   

    把上面代码中的连接部分拿出来就可以了,另外,网上很多这方面资料。建议去vcbase看看。
      

  7.   

    /*========================================================================
    Name: 连接 SQL SERVER 数据库. 
    -----------------------------------------------------
    Params: [dbsrc]: SQL SERVER 服务器名.
    [dbname]: 默认的数据库名.
    [user]: 用户名.
    [pass]: 密码.
    BOOL CAdoConnection::ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, long lOptions)
    {
    CString strConnect = _T("Provider=SQLOLEDB.1; Data Source=") + dbsrc + 
     _T("; Initial Catalog=") + dbname  +
     _T("; User ID=") + user + 
     _T("; PWD=") + pass;
    return Open(LPCTSTR(strConnect), lOptions);
    }
    ==========================================================================*/void ADOConn::OnInitADOConn()
    {
    try
    {
           m_pConnection.CreateInstance("ADODB.Connection");    
       _bstr_t strConnect="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Sea;Data Source=.";
    /*  Initial Catalog=shujuku;
      把这个数据库换一下名就可以了。
    //////////////////////////////////////////////////////////////////////////
    Integrated Security默认值是False,此时需要提供Uid和Pwd,即将以Sql Server 用户身份登陆数据库;
    如果设置为True,Yes 或 SSPI,这不能出现Uid和Pwd,将以Windows用户省份登陆数据库。强烈推荐用后一种形式,安全性更高。c.Integrated Security设置为SSPI和Persist Security Info同时出现,后者设置为False,可保证信息安全。*/
          
       m_pConnection->Open(strConnect,"","",adModeUnknown);
    }
    catch(_com_error e)
    {
    AfxMessageBox(e.ErrorMessage());
    }
    }_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
    {
        try
    {
    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;
    }BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
    {
    try
    {
            if(m_pConnection==NULL)
          OnInitADOConn();
            m_pConnection->Execute(bstrSQL,NULL,adCmdText);
    return true;
    }
    catch(_com_error e)
    {
    e.Description();
    return false;
    }
    }void ADOConn::ExitConnect()
    {
        if(m_pRecordset!=NULL)
    m_pRecordset->Close();
    m_pConnection->Close();
    ::CoUninitialize();
    }