无法连接到远程MS Access数据库
我不断收到无法连接到远程MS Access数据库
InvalidOperationException:ExecuteReader需要一个开放且可用的Connection。该连接的当前状态已关闭。]
这是因为我的连接已关闭。我的连接字符串有什么问题?为什么不开放。
protected void Page_Load(object sender, EventArgs e)
{
// Declaration section
//OleDbConnection objDBConn;
OleDbCommand objCmd;
OleDbDataReader objDR;
//create connection object
System.Data.OleDb.OleDbConnection conn = new
System.Data.OleDb.OleDbConnection();
// Modify the connection string and include any
// additional required properties for your database.
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data source= c:\inetpub\wwwroot\cm485a2\rreAccesscm485a2.mdb";
// Create OleDbCommand object with SQL to execute
objCmd = new OleDbCommand("SELECT * " +
" FROM customers " +
" ORDER BY cust_id", conn);
// Create a DataReader and execute the command
objDR = objCmd.ExecuteReader();
// Copy results from DataReader to DataGrid object
GridView1.DataSource = objDR;
GridView1.DataBind();
//close all objects
conn.Close();
conn.Dispose();
}
您需要先打开连接。
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbconnection.open.aspx
还,我会用using
要避免资源泄漏,这样的事情:
using (var connection = new OleDbConnection())
{
connection.Open();
using (var command = new OleDbCommand("connectionString"))
{
//Do my stuff.
}
}
这方面是容易留下由GC未收资源。
HTH
是的,呃。 。 。哇。我想我看了太久。当你一说出来就回到我的电脑,我就觉得自己像个白痴。谢谢!!!! – Mike 2011-03-17 18:07:47
好的,所以我还有另一个问题:我的弦怎么没有被接受?我实际上改变了路径,所以我知道它是正确的路径:'C:\ Program Files \ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ 129.2.168.163 \ cm485a2 \ rreAccesscm485a2.mdb'不是一个有效的路径。有任何想法吗? – Mike 2011-03-17 18:11:35
迈克,检查:http://www.connectionstrings.com/。 .mdb文件可能被锁定,或者您没有权限。很难说。我会使用像C:\ myStuff \ DB \ rreAccesscm485a2.mdb这样更简单的路径。 – Marcote 2011-03-17 18:34:12
您需要在设置连接字符串后调用conn.Open()。
编辑:Woops,Markust打我给它40秒的xD
改变你的连接字符串如下...
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data source= c:\\inetpub\\wwwroot\\cm485a2\\rreAccesscm485a2.mdb";
*note: '\\' instead of '\'
OP和您的代码示例使用字符串文字字符'@',它告诉编译器将其转换为\,而不是将其视为转义变量。这里有一些关于字符串文字的官方文档。 (http://msdn.microsoft.com/en-us/library/aa691090(v=vs.71).aspx) – 2012-08-29 19:59:23
尝试连接外的代码。 CS中的“=”之后的“”可能足以使其不起作用(它与其他值一起使用)。在使用它之前,请尝试一个明确的'conn.Open'。有时它会自动打开,有时不会,我不确定这些规则是什么 - 先执行它不会伤害,并且会与'conn.Close'对称(考虑使用'using') – 2011-03-17 16:23:34
此访问分贝似乎并不遥远.... – T30 2014-04-09 08:10:58