ExecuteReader需要一个打开的连接——它已经打开了,为什么会发生这种情况
本文关键字:为什么 情况 一个 ExecuteReader 连接 | 更新日期: 2023-09-27 18:20:16
下面的代码已在应用程序的其他部分成功使用,没有出现错误。
但是,由于某些原因,在从Access数据库读取数据时会抛出InvalidOperationException。
下面的代码只包含基本内容(而不是试图读取的项目,因为这会使可读性变得困难)。
尽管我在连接上调用了"Open"方法,但为什么我会出现这个错误?
代码如下:
string connString = "Provider= Microsoft.ACE.OLEDB.12.0;" + "Data Source= C:''temp''IntelliMed.accdb";
string queryString = "SELECT patientID, firstName, lastName, patientGender, dateOfBirth, residentialAddress, postalAddress, nationalHealthNumber, telephoneNumber, cellphoneNumber, cscNumber FROM PatientRecord WHERE patientID = @patientID";
try
{
using (OleDbConnection con = new OleDbConnection(connString))
{
con.Open();
OleDbCommand command = new OleDbCommand();
command.CommandText = queryString;
command.Parameters.AddWithValue("@patientID", patientID);
command.Connection = ctnPatientRecord;
OleDbDataReader prescriptionDetailsReader = command.ExecuteReader();
while (prescriptionDetailsReader.Read())
{
//Read stuff.
}
//Close the reader.
}
//Close the connection.
} //Method "closing" bracket.
任何帮助我们都将不胜感激。提前谢谢。
我认为您应该将命令与连接关联起来
command.Connection = con;
或者更好的是使用CreateCommand方法而不是构造函数通过连接创建命令。