我在VC编程中,发现了一个怪现象,我是用ADO打开数据库,其连接字符串如下:
Provider=msdasql.1;dsn=ms access database;dbq=logon.mdb;uid=;pwd=422700;所用的数据库文件即是可执行文件同一目录下的logon.mdb;当没有进行文件存取时,连接数据不出错。但一旦进行了文件存取,即报错“找不到文件”。
如果将连接字符串改为:
Provider=msdasql.1;dsn=ms access database;dbq=e:\logon.mdb;uid=;pwd=422700;
则进行文件操作,不影响对数据库的连接。
我怀疑,程序在对文件进行了存取后,已经将目录转到了刚刚操作过的文件那里。而不是在可执行文件的目录下,因此,出现了找不到数据库文件的情况。
怎样将目录转变过来?

解决方案 »

  1.   

    没错,你可以用GetCurrentDir取得当前路径,然后保存,存取完文件互在恢复当前路径。
      

  2.   

    是,一般情况下,肯定转变到操作的目录的,你可以自己转变回来
    GetModuleFileName 和GetCurrentDir都可以
      

  3.   

    你可以先得到执行文件所在的路径.
    CString sIniFilePath;  
    CString sModFileName;
    GetModuleFileName(NULL, sModFileName.GetBuffer(MAX_PATH), MAX_PATH);
    sModFileName.ReleaseBuffer();

    sModFileName.MakeReverse();
    sIniFilePath = sModFileName.Right(sModFileName.GetLength() - sModFileName.Find('\\'));
    sIniFilePath.MakeReverse();
    -----------------------------------
    sIniFilePath就是你要得的路径