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:\\ 被过滤了, 怎么办??
{ 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:\\ 被过滤了, 怎么办??
再看看函数调用,看待传入参数在调用函数之前的值
如果是默认的,没传参,就直接把
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的值
只是:db1.mdb真实奇怪
我可能说的偏了,如果默认参数值没问题,那就抛开掺进来的参数,定义一个CString dabaBase1 = T("C:\\db1.mdb")替代dabaBase。来检测到底是不是CString的问题不过既然解决了,我还是很奇怪,系统会把前几个字符吃掉么?
如果是这样,会不会你在不同的时间再运行还会出现相同的问题?