BOOL  CSqlOperateDll::ConnDataBase2( CString dabaBase/*=_T("C:\\db1.mdb")*/)   
 {   CString tmp;
    tmp=_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=")+dabaBase;   //设置了断点 跟踪到了这里,发现tmp的值:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb" 也就说是 C:\\ 被过滤了,  怎么办??

解决方案 »

  1.   

    dabaBase 你确定传进去的时候有C:\\? 断点看看,CString没那么智能,会帮你过滤
      

  2.   

    很有可能,但是传参的时候,我没有放参数啊,默认参数的函数,默认就是C:\\db1.mdb,我很奇怪啊,查询过了 CString 不可能会过滤啊 ,怎么会遇到这种事
      

  3.   

    感觉还是传参的问题,打断点到刚进入函数那里,看传进来的参数值
    再看看函数调用,看待传入参数在调用函数之前的值
    如果是默认的,没传参,就直接把
    tmp=_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=")+dabaBase;
    改写成
    tmp=_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=")+_T("C:\\db1.mdb");
    看看tmp的值
      

  4.   

    给它穿参数C:\\db1.mdb 是没有问题,可是只要用默认参数,不显式传参数,
    只是:db1.mdb真实奇怪
      

  5.   

    我刚才回复的前提是你的默认参数值没有问题。
    我可能说的偏了,如果默认参数值没问题,那就抛开掺进来的参数,定义一个CString dabaBase1 = T("C:\\db1.mdb")替代dabaBase。来检测到底是不是CString的问题不过既然解决了,我还是很奇怪,系统会把前几个字符吃掉么?
    如果是这样,会不会你在不同的时间再运行还会出现相同的问题?
      

  6.   

    额。我以为CSTRING这么了厉害!
      

  7.   

    CString本身肯定不会过滤的。肯定你的程序本身的问题
      

  8.   

    有时候你第一次错了,它就记住了,可以REBUILD试一下,或者重启工程重启电脑什么的。这种灵异事件我也碰见过。