【发布时间】:2011-03-17 16:20:39
【问题描述】:
我一直收到一个
InvalidOperationException:ExecuteReader 需要打开且可用的连接。连接的当前状态为关闭。]
这是因为我的连接已关闭。我的连接字符串有什么问题?为什么打不开。
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();
}
【问题讨论】:
-
尝试在代码之外进行连接。 CS中“=”之后的“”可能足以使其不起作用(它与其他值一起使用)。还可以在使用之前尝试明确的
conn.Open。有时它会自动打开,有时不会自动打开,我不确定规则是什么——首先这样做不会造成伤害,并且会与conn.Close对称(考虑使用using) -
这个访问数据库好像不是远程的......