C#打开MDB数据问题求救

zhengjialon 2013-07-13 04:54:33
这个《库存_be.mdb》数据库是有其它N个客户端链接的,但是我用C#再链的时候就出错,用其它客户端ADO方式链接没问题,
Error: Microsoft Jet 数据库引擎打不开文件'\\server\databasen$\库存_be.mdb'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。
...全文
218 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhengjialon 2013-07-18
  • 打赏
  • 举报
回复
用服务的形式打开链接一直提示错误,改成非服务的形式一点没问题
HooverHuang 2013-07-16
  • 打赏
  • 举报
回复

 string  MyConnctionString="";
 OleDbConnection  MyConnection = new OleDbConnection(MyConnctionString);
 public DataTable ExecReader_Sql(string strCmdText)
        {
            OleDbCommand oleDbCommand = new OleDbCommand();
            oleDbCommand.CommandTimeout = 7200;
            OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter();
            DataTable dtRet = null;
            try
            {
                oleDbCommand.Connection = MyConnection;
                oleDbCommand.CommandText = strCmdText;
                oleDbDataAdapter.SelectCommand = oleDbCommand;
                if (MyConnection.State == ConnectionState.Closed)
                {
                    MyConnection.Open();
                }
                dtRet = new DataTable();
                oleDbDataAdapter.Fill(dtRet);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                oleDbDataAdapter.Dispose();
                oleDbCommand.Dispose();
            }
            return dtRet;
        }
连接字符串格式化函数
        #region  Oledb数据库连接字符串格式化
        /// <summary>
        /// Oledb数据库连接字符串格式化
        /// </summary>
        /// <param name="connectionString">Oledb数据库完整路径</param>
        /// <returns>Oledb数据库连接字符串</returns>
        public static string OledbConnStringFormat(string strOledbName)
        {
            string strOledbDir = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName) + @"\";
            return String.Format("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = {0};", strOledbDir+strOledbName);
        }
        #endregion
zhengjialon 2013-07-16
  • 打赏
  • 举报
回复
还有人帮忙吗?
zhengjialon 2013-07-15
  • 打赏
  • 举报
回复
我的C#打开方式为: //创建数据库连接 OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\databasen$\库存_be.mdb"); aConnection.Open(); myDataSet = new DataSet(); OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from 进出成衣单据 where 单据类型='JR' AND FXTEXP=FALSE ORDER BY 日期,单据编号", aConnection);
Regan-lin 2013-07-14
  • 打赏
  • 举报
回复
访问的数据库的代码上下看看
  • 打赏
  • 举报
回复
Jet(Access)数据库引擎是支持多用户的,甚至也支持事务(回滚)操作。虽然它的数据库文件容易损坏,但是在多用户这个方面,还是支持的。 不过如果直截了当地访问mdb文件,那么windows系统直接就把它锁住了。所以你需要告诉windows系统这个文件是共享的,才能用户多用户操作。
stonespace 2013-07-14
  • 打赏
  • 举报
回复
access不是多用户数据库,所以同时访问应该不可靠,
  • 打赏
  • 举报
回复
你需要把它放在设置了“windows的局域网共享”的文件夹下。
zhengjialon 2013-07-14
  • 打赏
  • 举报
回复
这这个MDB是在服务器上共享的,C#链接代码明天我发上来,在公司,如果我把这个MDB拷贝到本地再用C#是没问题的
threenewbee 2013-07-13
  • 打赏
  • 举报
回复
这个不好说,也许用某种语言底层共享了连接,支持多个客户端同时连接。 你可以用那种语言写一个代理,或者升级到sql server。
  • 打赏
  • 举报
回复
楼主,把数据库访问相关代码贴过来看下

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧