所有资料都只是说连接到数据源什么的  我注册数据源成功了 连也连成功了总之就是连到了去ODBC 不能连去SQL的样子 不过调用SQL又貌似要用到ODBC驱动 现在的情况就像ODBC本身就是一个库 现在只能连接ODBC而不能连SQL 而ODBC 。。 哎 乱 求助啊!!!到底~~~怎么连到指定的SQL库的啊? 
有从开始到结束的简单例子吗?? 

解决方案 »

  1.   

    很简单的.MSDN有示例代码。#include <afxdb.h>
    void CMFCTestDlg::OnLButtonDblClk(UINT nFlags, CPoint point)
    {
    CDatabase db;
    CRecordset Record(&db);

    if (db.OpenEx(TEXT("Driver={SQL Server};Server=192.168.0.190;Database=master;Uid=sa;Pwd=sa;"),CDatabase::openReadOnly))
    MessageBox(TEXT("数据库连接成功!"));
    TRY
    {
    Record.Open(CRecordset::forwardOnly, TEXT("SELECT * from sysfiles"));
    }CATCH(CDBException, e)
    {
    MessageBox(e->m_strError);
    return;
    }
    END_CATCH; CString Name;
    CString FileName;
    CString tmp;

    while(!Record.IsEOF())
    {
    Record.GetFieldValue(TEXT("name"), Name);
    Record.GetFieldValue(TEXT("filename"), FileName);
    tmp.Format(TEXT("%s\n%s"), Name, FileName);
    MessageBox(tmp);
    Record.MoveNext();
    } Record.Close();
    db.Close(); CDialog::OnLButtonDblClk(nFlags, point);
    }
      

  2.   

    下面的代码我测试了,没有问题,strSourceName就是数据源的名称CString connstr;
    connstr.Format(_T("Provider=MSDASQL.1;Persist Security Info=False;Data Source=%s"), strSourceName);
    try
    {
    HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));
    m_pConnection->CursorLocation = adUseClient;
    m_pConnection->ConnectionTimeout = 5;
    if ( SUCCEEDED(hr) )
    {
    hr = m_pConnection->Open(_bstr_t(connstr),"","",adModeUnknown);

    }
    }
    catch (_com_error e)
    {
    int nSel = ::MessageBox( NULL, 
    e.Description() + _T("是否退出?"), 
    _T("连接"), 
    MB_YESNO); if (IDYES == nSel)
    {
    exit(0);
    } }
      

  3.   

    我程序上用的ODBC的连接代码 你看看 //连接数据库
    CDatabase m_db;
    CRecordset rs,rsSiteCount,rs1,rs2,rsconnt,rsReaderID;
    TRY
    {
    m_db.OpenEx(strcon,CDatabase::noOdbcDialog);
    rs.m_pDatabase = &m_db;
    rsSiteCount.m_pDatabase = &m_db;
    rs1.m_pDatabase = &m_db;
    rs2.m_pDatabase = &m_db;
    rsconnt.m_pDatabase = &m_db;
    rsReaderID.m_pDatabase = &m_db;
    }
    CATCH(CDBException,ex)
    {
    AfxMessageBox(ex->m_strError);
    AfxMessageBox(ex->m_strStateNativeOrigin);
    }
    AND_CATCH(CMemoryException,pEx)
    {
    pEx->ReportError();
    AfxMessageBox(_T("memory exception"));
    }
    AND_CATCH(CException,e)
    {
    TCHAR szError[100];
    e->GetErrorMessage(szError,100);
    AfxMessageBox(szError);
    }
    END_CATCH_begin:
    //查询站点数
    CString sqlSiteCount,SiteCount;
    sqlSiteCount.Format(_T("select count(fid) as SiteCount from tim_site "));
    try
    {                
    rsSiteCount.Open(AFX_DB_USE_DEFAULT_TYPE,sqlSiteCount);  //打开查询记录
    rsSiteCount.GetFieldValue(_T("SiteCount"),SiteCount);
    rsSiteCount.Close(); }
    catch(CDBException * ex)
    {
    AfxMessageBox(ex->m_strError);
    AfxMessageBox(ex->m_strStateNativeOrigin); }
    catch(CException * e)
    {
    TCHAR szError[100];
    e->GetErrorMessage(szError,100);
    AfxMessageBox(szError);
      

  4.   

    CString strcon;
    strcon.Format(_T("DSN=SQLDNS;UID=%s;PWD=%s;"),UserName2,PassWord2);
      

  5.   

     回facelc:select count(fid) as SiteCount from tim_site 这样的语句是什么来的???
      

  6.   

    注册数据源,是为了把ODBC驱动和指定数据库连接在一起吗?
      

  7.   

    差不多就是这个意思
    ODBC的操作方式就是通过数据源操作
      

  8.   

    插入:insert into table1(field1,field2) values(value1,value2) 
    有谁能完整解释下这SQL语句啊?里面的table1(field1,field2) values(value1,value2)是什么意思??
      

  9.   

    table1是你要插入的表名
    field1,field2是要设置的字段名
    value1,value2是要设置的值
      

  10.   

    建议Lz找本好点的书看看吧,把基本数据库连接语句的参数和SQL简单语句学习一下,
    这比我们说的要权威的多,也系统得多~
      

  11.   

    CDatabase *myado;
    CRecordset *myado_re;
    myado=new CDatabase;
    myado_re=new CRecordset(myado);
    myado_re->m_pDatabase=myado;
    myado->OpenEx(_T("DSN=crash_ku2"),CDatabase::noOdbcDialog) ;
    CString word(_T("select 1,9,8")),word02;
    myado_re->Open(CRecordset::forwardOnly,word);
    myado_re->GetFieldValue(1,word02);
    MessageBox(word02);我这么写道 但是输出的word02是9,我无语~~~~这是什么意思啊??