如题,谢谢~~~~~

解决方案 »

  1.   

    各给老兄:
       请看看,我的连接字符串现在是这样写,还是连不上。帮我看看是那里写错了.谢谢。
    CString strConnect;    strConnect.Format("driver={Microsoft Visual Foxpro Driver};UID=;"
                  "SourceType=DBF;SourceDB=%s;Exclusive=No",dbpath); 
      

  2.   

    Visual   FoxProIf   you   are   using   a   database   container   a   connection   string   is   the   following:strConnection   =   _T("Driver={Microsoft   Visual   Foxpro   Driver};UID=;"
            ourceType=DBC;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No");
    If   you   are   working   without   a   database   container   you   must   to   change   the   SourceType   parameter   by   DBF   as   in   the   following   connection   string:strConnection   =   _T("Driver={Microsoft   Visual   Foxpro   Driver};UID=;"
            "SourceType=DBF;SourceDB=C:\\DatabasePath\\MyDatabase.dbc;Exclusive=No");好像有两种不同的连接情况,没试过,给你参考一下
      

  3.   

    兄弟,不是你写什么驱动, 系统就有什么驱动的, ADO 默认是没有Visual Foxpro 驱动的,要自己下载安装的。
      

  4.   

    到微软下去:http://www.microsoft.com/downloads/thankyou.aspx?familyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displayLang=en&oRef=http%3a%2f%2fmsdn.microsoft.com%2fvfoxpro%2fdownloads%2fupdates%2fdefault.aspx
      

  5.   

    我试了一下还是有问题。连上以后,_ConnectionPtr怎么和_RecordsetPtr建立连接呢?
      

  6.   

    LONG    dwRecordcount=0; ///////////记录个数
    m_pRecordset .CreateInstance (__uuidof(Recordset )); /////////连接成功,创建记录集实例
    try{    m_pRecordset ->Open (varSQL ,
                             m_pConnection. GetInterfacePtr (),/////得到打开的数据库接口
                             adOpenDynamic ,
                             adLockOptimistic ,
                             adCmdText );
             ////////////////得到记录集,进行其查询
    while(!m_pRecordset->GetadoEOF())
    {
    _variant_t varPass; varPass = m_pRecordset->GetCollect ("SN"); strPass=(char *)_bstr_t(varPass); m_pRecordset->MoveNext(); strPass .TrimRight (); dwRecordcount +=1;
      
      
    }        }
    catch(_com_error e)
    {
    MessageBox (e.ErrorMessage());
    return;      //////////如果出错,马上返回,停止数据库操作
    }m_pRecordset ->Close ();//////////正常操作后关闭记录集
      

  7.   

    去vckbase上看一下ado使用的文章,会教你怎么使用ado的
      

  8.   

    _ConnectionPtr怎么和_RecordsetPtr建立连接楼上已经讲清楚了,我就不说了
      

  9.   

    我实验了一下,还是不行。现在的问题是我的表文件是tt.dbf,表明也是tt.

        m_pRecordset ->Open (varSQL ,
                             m_pConnection. GetInterfacePtr (),/////得到打开的数据库接口
                             adOpenDynamic ,
                             adLockOptimistic ,
                             adCmdText );
    中:
       varSQL该怎么写呢??
    //====================================
    我用这种方式连接过SQL2000,已经成功了。连接dbf和连接SQL除了在指定连接字符串的不同外,还有其它不同的地方吗?
    //==================================
    非常感谢,各位帮助。
      

  10.   

    varSQL 是select * from table where aaa = 1从表table里面找所有字符aaa的值是1的记录,依此类推
      

  11.   

    这样吧,你用下面的这段代码得到具体的出错信息吧,然后贴出来,再讨论一下吧
    catch (_com_error e) 
     {  
      CString strComError;
      strComError.Format("错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s",
           e.Error(),                  // 错误编号
           e.ErrorMessage(),           // 错误信息
           (LPCSTR) e.Source(),        // 错误源
           (LPCSTR) e.Description());  // 错误描述      
      
      ::MessageBox(NULL,strComError,"错误",MB_ICONEXCLAMATION);
     }现在不是很清楚你是在连接dbf的时候出错,还是连接成功而在查询的时候出错。dbf的数据库没试过,还是sql server的数据库好阿^_^。
      

  12.   

    我的连接字符串是:
    driver={Microsoft Visual Foxpro driver};UID=;SourceType=DBF;SourceDB=F:\TEMP\foxpro_ado\tt.dbf;Exclusive=No在连接的时候,显示的错误调试信息是:
    State: (null), Native: 0, Source: Microsoft OLE DB Provider for ODBC Drivers大家看,在连接字符串里,已经指定是foxpro的驱动,但在实际的时候却没有加上。(我已经按照SoLike(思危)提供的下载地址 下载并安装了foxpro的驱动)。这个问题该怎么解决呢?非常感谢各位的帮助。
      

  13.   

    是不是SourceDB=F:\TEMP\foxpro_ado\tt.dbf中的路径分隔符要用“\\”阿,或者你先将tt.dbf复制到你的工程目录,然后设置SourceDB=tt.dbf,看行不行吧
      

  14.   

    不是这样的,我这里显示的SourceDB=F:\TEMP\foxpro_ado\tt.dbf,就是实际文件路径(是用TRACE打印出来的),应该不是"\\"的问题。
      

  15.   

    非常感谢。
    我现在的连接字符串是:Provider=vfpoledb;Data Source=F:\temp\foxpro_ado\tt.dbf;
    现在的现象是可以连接上了,但在
    m_adoRecordset.AddNew(); CString strName = "dupeng"; m_adoRecordset.PutCollect("name" , strName);
    m_adoRecordset.PutCollect("age"  , 10); m_adoRecordset.Update();
    的时候,提示:
    Warning: AddNew 方法发生异常. 错误信息: Unknown error 0x800A0CB3; 文件: F:\temp\foxpro_ado\AdoRecordSet.cpp; 行: 371
    Warning: Update 方法发生异常. 错误信息: Unknown error 0x800A0CB3; 文件: F:\temp\foxpro_ado\AdoRecordSet.cpp; 行: 395这是什么原因造成呢?
      

  16.   

    ADODB.Recordset (0x800A0CB3) 目前的资料录集不支援更新。这可能成为提供者或所选 锁定类型的限制。 ...
      

  17.   

    m_pRecordset ->Open (varSQL ,
                             m_pConnection. GetInterfacePtr (),/////得到打开的数据库接口
                             adOpenDynamic ,
                             adLockOptimistic ,
                             adCmdText );
    打开纪录集是这样写的吗,这一步没有出错提示吧?
      

  18.   

    问题解决了,连接字符串是:
    Provider=VFPOLEDB.1;Data Source=F:\\temp\\foxpro_ado;Password=;Collating Sequence=MACHINE
    打开方式就如lshddd所说的那样。开始散分了,各位非常感谢~~~~~~~
      

  19.   

    连foxpro这么麻烦的,还是sql server好玩一点^_^