当前位置: 代码迷 >> C# >> C# 访问MDB文件有关问题
  详细解决方案

C# 访问MDB文件有关问题

热度:549   发布时间:2016-05-05 05:33:55.0
C# 访问MDB文件问题
想读取某MDB文件,简单写了一个程序测试一下
事实证明是可以的



但是当我把代码搬到项目中的时候,发现了以下问题

一直提示我:Microsoft Office Access 数据库引擎无法打开文件“C:\Users\Administrator\Desktop\test.mdb”或无法向其写入数据。它已经被其他用户以独占方式打开,或者您没有查看或写入其数据的权限。

然后奇怪的事情发生了,我把该MDB文件放到了F盘,换了个路径,竟然测试就通过了。到现在都没明白为什么。
完整代码如下:

 public class ReadMDB
    {
        public object MDBreader(RunVisitor scriptObject, object data, ArrayList argsList)
        {
            #region xx
            string filepath = (string)argsList[0];
            string passWord = (string)argsList[1];
            string sqlstr = (string)argsList[2];
            string tablename = (string)argsList[3];
            OleDbDataAdapter myadapter;
            string strcon = sqlstr;
            if (passWord == "")
            {
                myadapter = new OleDbDataAdapter(strcon, InitialConnection(filepath));
            }
            else
            {
                myadapter = new OleDbDataAdapter(strcon, InitialConnection(filepath, passWord));
            }
            DataSet mydataset = new DataSet();
            myadapter.Fill(mydataset, tablename);
            return mydataset;
            #endregion
        }



        public OleDbConnection InitialConnection(string filepath)
        {
            string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath;
            OleDbConnection connection = new OleDbConnection(constr);
            return connection;
        }
        public OleDbConnection InitialConnection(string filepath, string password)
        {

            string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Jet OLEDB:Database Password=" + password + ";";
            OleDbConnection connection = new OleDbConnection(constr);
            return connection;
          
        }

大神们这是为什么




------解决思路----------------------
这么简单的问题,因为你那个数据库被其它程序占用了,或是你打开了数据库没有关闭
------解决思路----------------------
没有权限
即使以管理员身份运行,管理员身份也不是最高权限
要么你就提高管理员的权限
------解决思路----------------------
你将数据库文件放在项目所在的目录下,试试
------解决思路----------------------
mdb文件本来就应该放到项目bin目录下
不仅是mdb文件,你所有的配置文件,资源文件,dll,也都应该在这个目录下
否则换个环境,你有可能找不到用户桌面到底在哪一个目录下
如果你写死成C盘,那么用户有可能根本没有C盘,把操作系统放到了D盘,或者C盘是光驱,这都是有可能的
------解决思路----------------------
默认情况下 Jet 是以独占方式访问文件的。你 Access 打开了 mdb 文件,程序就不能打开。
  相关解决方案