2011-11-25 180 views
0

Cannot open the MS Office Access database engine workgroup information file - 当我有发布的代码。打开连接到MS Access 2007文件时出错:无法打开MS Office Access数据库引擎工作组信息文件

我想在我的代码中做的是创建MS Access 2007文件,然后从我的程序中设置用户名和密码。我在这里做错了什么?发生

错误的位置:objOleDbConnection.Open();

编辑:我已经做了一些改变,好像它会打开一个连接,但该命令是不正确。

现在的问题是在这里:

 objOleDbCommand.CommandText = 
      "ALTER USER " + storedAuth.UserName + 
      " PASSWORD [" + storedAuth.Password + "] []"; 

整个代码:

// Creating an object allowing me connecting to the database. 
    OleDbConnection objOleDbConnection = new OleDbConnection(); 
    objOleDbConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
      "Data Source=" + sfdNewFile.FileName + ";Persist Security Info=False"; 
    // Creating command object. 
    OleDbCommand objOleDbCommand = new OleDbCommand(); 
    objOleDbCommand.Connection = objOleDbConnection; 

    try 
    { 
     objOleDbConnection.Open(); 
     objOleDbCommand.CommandText = "ALTER USER " + 
        storedAuth.UserName + " PASSWORD [" + 
        storedAuth.Password + "] []"; 
     objOleDbCommand.ExecuteNonQuery(); 
    } 
    catch (Exception ex) 
    { 
     // Displaying any errors that 
     // might have occured. 
     MessageBox.Show("Error: " + ex.Message); 
    } 
    finally 
    { 
     objOleDbConnection.Close(); 
    } 
+1

这是一个MDB或ACCDB文件?你提到这是一个Access 2007文件,但我想完全清除,因为[ACCDB文件没有用户级安全性](http://office.microsoft.com/en-us/access-help/what-发生对用户级安全-HA010234561.aspx)。 –

+0

@Cheran Shunmugavel:MDB有吗?我确实使用ACCDB。 – HelpNeeder

+1

是的。确保您不会将用户级别的安全性(仅适用于MDB)与简单的数据库密码(可用于MDB或ACCDB)相混淆。如果您只想密码保护数据库,则可以使用['ALTER DATABASE PASSWORD'](http://msdn.microsoft.com/zh-cn/library/bb177884%28v=office.12%29.aspx)命令。 –

回答

0

要更改Access DB密码,您必须以独占模式打开它。尝试将其添加到连接字符串中; Exclusive = 1。

createMSFile.Create("Provider=Microsoft.ACE.OLEDB.12.0;Exclusive=1;Data Source=" + 
     sfdNewFile.FileName); 
+0

如果我添加这个,我得到一个错误:无法找到可安装的ISAM。 – HelpNeeder

+0

PS你在那里的行是创建一个文件的行,这很好。我有其他代码行有问题。看看我的OP。我之前在发布你正在谈论的这条线路时犯了一个错误,但我已经纠正了它。 – HelpNeeder

+0

okk ....然后从上面的行中删除Exclusive并插入'OleDbConnection objOleDbConnection = new OleDbConnection(“Provider = Microsoft.ACE.OLEDB.12.0; Exclusive = 1”+ “Data Source =”+ sfdNewFile.FileName); '...看看它是否有效 –

0

那么,你得到暗示别人是保持文件打开,防止密码更改错误..

+0

但是,哪里?虽然我正在关闭所有的东西,不是吗? – HelpNeeder

+0

齿形用户,也许? – zmbq

+0

好的,好像我修复了这个问题。我现在有另一个。 – HelpNeeder

相关问题