简体   繁体   English

无法使用asp.net和C#访问Microsoft Access数据库

[英]Unable to access the Microsoft Access database using asp.net and C#

This is code i wrote to add some text to accordion pane on a button click: 这是我编写的代码,用于在单击按钮时向手风琴窗格中添加一些文本:

protected void Button1_Click1(object sender, EventArgs e)
    {
        //Use a string variable to hold the ConnectionString.
        string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;"
            + "Data Source=D:\\C#Samples\\StudentDetails\\WebRole1\\App_Data\\Students1.accdb";
        System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection();
        cn.ConnectionString = connectString;
        //Create an OleDbConnection object, and then pass in the ConnectionString to the constructor.
        //OleDbConnection cn = new OleDbConnection(ConfigurationManager.ConnectionStrings["AccessConnectionString"].ConnectionString);
        try
        {
            //Open the connection.
            cn.Open();
        }
        catch (Exception ex)
        {
            AccordionPane1.Controls.Add(new LiteralControl("Open Error"));
        }

            string selectString = "SELECT * FROM BasicInfo";

            //Create an OleDbCommand object.
            //Notice that this line passes in the SQL statement and the OleDbConnection object
            OleDbCommand cmd = new OleDbCommand(selectString, cn);

            //Send the CommandText to the connection, and then build an OleDbDataReader.
            //Note: The OleDbDataReader is forward-only.

            try
            {
                OleDbDataReader reader=null;
                try
                {
                    reader = cmd.ExecuteReader();
                }
                catch (Exception es)
                {
                    AccordionPane1.Controls.Add(new LiteralControl(" datareader"));
                }
                string s = "s";
                reader.Read();
                s = reader["S_No"].ToString();

                AccordionPane1.Controls.Add(new LiteralControl(s));
                //Close the reader and the related connection.
                reader.Close();
                cn.Close();
            }
            catch (Exception ex)
            {
                AccordionPane1.Controls.Add(new LiteralControl(" Read Error"));
            }
    }

I have my access 2007 database in the folder i specified in the connectString. 我在connectString中指定的文件夹中有我的Access 2007数据库。 When im viewing in the browser, on the button click i am getting all the three exceptions: 当我在浏览器中查看时,在按钮上单击我会得到所有三个例外: 在此处输入图片说明

What might be the problem in opening the database? 打开数据库可能是什么问题? Do i need to make any other changes? 我还需要进行其他更改吗?

Change 更改

Provider=Microsoft.Jet.OLEDB.4.0; 提供商= Microsoft.Jet.OLEDB.4.0;

to

Provider=Microsoft.ACE.OLEDB.12.0 供应商= Microsoft.ACE.OLEDB.12.0

Provider=Microsoft.ACE.OLEDB.12.0;"
            + "Data Source=D:\\C#Samples\\StudentDetails\\WebRole1\\App_Data\\Students1.accdb

Hopefully it will solve the issue. 希望它将解决问题。

you connection string might be cause of isssue 您的连接字符串可能是引起问题的原因

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\abc.mdb;";

OleDbConnection MyConn = new OleDbConnection(ConnStr);

this For access 2007 also check the path of database is cocrect. 对于Access 2007,还要检查数据库的路径是否正确。

You can use |DataDirectory| 您可以使用|DataDirectory| instead of real path and you have to change the Provider=Microsoft.ACE.OLEDB.12.0 (as suggested by @MMK) 而不是 real path ,您必须更改Provider=Microsoft.ACE.OLEDB.12.0 (由@MMK建议)

 string connectString = @"Microsoft.ACE.OLEDB.12.0;
       Data Source=|DataDirectory|\Students1.accdb;Persist Security Info=False;";

and always use using block which dispose IDisposable objects properly. 并始终使用using块正确处理IDisposable对象。

using(OleDbConnection cn=new OleDbConnection())
{
 using(OleDbCommand cmd=new OleDbCommand())
 {
  cn.ConnectionString=connectionString;
  cmd.CommandText=selectString;
  cmd.Connection=cn;
  ...
 }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM