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.

任何帮助我们都将不胜感激。提前谢谢。

ExecuteReader需要一个打开的连接——它已经打开了,为什么会发生这种情况

我认为您应该将命令与连接关联起来

command.Connection = con;

或者更好的是使用CreateCommand方法而不是构造函数通过连接创建命令。

相关文章: