dbfpath = "d:\dbf\a.dbf";
OdbcConnection oconn = new OdbcConnection();
                string connStr = @"Driver={Microsoft FoxPro VFP Driver (*.dbf)};SourceType=DBF;SourceDB=" + dbfpath + ";Exclusive=Yes;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=YES";
                oconn.ConnectionString = connStr;oconn.Open();
                OdbcCommand cmd = new OdbcCommand();
                cmd.Connection = oconn;
                cmd.CommandText = "set exclusive on;pack " + dbfpath ;
                cmd.ExecuteNonQuery();
                oconn.Close();
我这段代码,执行到cmd.ExecuteNonQuery();之后程序就假死了...
然后结束调试,用Foxpro打开a.dbf之后发现记录都没有了,也就是说被正常的物理删除了...但不知道为什么程序就假死了....dbf文件的权限是everyone有完全控制权限

解决方案 »

  1.   

    DELETED参数用NO也试过Exclusive参数用No也试过...
      

  2.   

      
     Standard Security:"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;"  Workgroup:"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;"  Exclusive:"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Exclusive=1;Uid=admin;Pwd=" 
    几种ODBC的连接。。不必要的不写的好。
      

  3.   

    Exclusive=Yes是说唯一吗?应该是个整数值吧?我上面代码这里想想标红的。
      

  4.   

    楼上你说的是Access数据库,我说的是DBF....
      

  5.   

     
    "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" + dbfpath + ";"其实意思是一样的。。把不必要的去掉。
      

  6.   

    Microsoft dBASE Driver 不支持pack....唉,最后还是通过其他方式解决了,我其实就是想清空这个dbf让它回到初始状态....最后只好把原始文件放到Resource里,初始化的时候把那个文件删除,然后把Resource里的文件重新写回去...