I am trying to connect to an MS Access database (.mdb) through OleDb
. My query is
SELECT * FROM ListQueries
which fetches me the error
SQL Execution Error.
Executed SQL Statement: SELECT * FROM ListQueries Error Source: Microsoft JET Database Engine Error Message: Records cannot be read; No read permission on 'MSysObjects'.
Then I tried this answer, but it did not help. Then I saw another answer says to do this.
strDdl = "GRANT SELECT ON MSysObjects TO Admin;"
CurrentProject.Connection.Execute strDdl
I do not know how to implement that in my web project
. Was writing something like this as per this suggestion by @HansUp
Alternatively, it should work from c# if you run it from an OleDb connection to the Access db
The code is,
OleDbConnection con;
using (con = new OleDbConnection(Connection.connectionString()))
{
con.Open();
using (var com = new OleDbCommand("GRANT SELECT ON MSysObjects TO Admin", con))
{
com.ExecuteNonQuery();
}
using (var com = new OleDbCommand("Select * from ListQueries", con))
{
using (var dr = com.ExecuteReader())
{
while (dr.Read())
{
qryList.Add(SQLReaderExtensions.SafeGetString(dr, "Name"));
}
dr.Close();
}
}
con.Close();
}
The first com.ExecuteNonQuery()
gives me this error.
Cannot open the Microsoft Jet engine workgroup information file.
I would really like to know how to grant permission for an OleDb call to work. Any suggestions will be wonderful
P.S: BTW, I am using MS Access 2010.