在做一个小程序,从另外一个系统取access数据库里面的内容,前几天在这里热心人的帮助下连上了数据库,但是是独占方式打开的.怎么样才能本地打开数据库,而同时不影响原来系统的读写呢?请大家继续帮忙看看,谢谢了!

解决方案 »

  1.   

    如何远程连上ACCESS数据库的呢?
      

  2.   

    我是这样连上的:private void Bind()
    {

    string con_string=@"Jet OLEDB:Database Locking Mode=1;Data Source=""\\tg-yl1\test\db3_ole.mdb"";Mode=Share Deny None;Provider=""Microsoft.Jet.OLEDB.4.0"";User ID=Admin;";

    OleDbConnection OleDbConn=new OleDbConnection(con_string);
    OleDbConn.Open();
    string strSel="select * from table1";
    OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,OleDbConn);
    DataSet ds=new DataSet();
    MyAdapter.Fill(ds,"table1");
    this.dataGrid1.DataSource=ds.Tables[0];
    }我参考别人的VB程序,感觉是locking mode的设置问题,但是反复更改locking mode属性值也都不对...
      

  3.   

    这是完整的connection string:
    string con_string=@"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""\\tg-yl1\test\db3_ole.mdb"";Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1";
      

  4.   

    楼主,ACCESS是独占方式读写的,您想要的功能,估计实现不了.但如果操作不多的话,打开用完后,把连接关闭,这样就不影响另一方的使用了
      

  5.   

    一般小点的应用,对ACCESS数据库的访问操作,只要打开用完后,马上关闭,一般都可以满足:不同的系统共用一个MDB,但并不保险...
    因为Access不支持并发
      

  6.   

    谢谢ydsunny(小强)的回复.我本来也是这样认为,但是从同事那里看到一个VB程序就是与另一台机器上的VB程序共同操作同一个access,其中读写远程access的adodc的recordset有个参数设置为adopenoptimistic.所以我觉得如果vb里面可以远程操作,c#总也该有方法吧.
      

  7.   

    vb里用的是ado,ado的Recordset有游标参数,但ado.net里,好像并不提供这样的参数...ado.net并没有完全兼容ado,比如,ado.net已经不存在recordset了,只有datareader和dataset.有个法子倒是可行,您直接在C#里引用adodb,通过ado来远程操作Access!至于ado.net能不能达到此效果,还待高手出现了
      

  8.   

    用aspx网页方式读取数据库内容,生成xml文件,然后程序读取xml