[英]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.