ExecuteNonQuery requires an open and available Connection. The connection's current state is closed

后端 未结 5 1115
情书的邮戳
情书的邮戳 2021-02-07 11:55

ExecuteNonQuery requires an open and available Connection. The connection\'s current state is closed.

What am I doing wrong here? I\'m assuming you can

5条回答
  •  广开言路
    2021-02-07 12:21

    Your problem is:

    SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    

    You should just call cmd.ExecuteReader()' if you want to use the connection again prior to "getting rid" of it. If you want to get an understanding for what the CommandBehaviour.CloseConnection part does/means then the documentation for SqlCommand.ExecuteReader is a good bet. There's also documentation to tell you what all the possible values of the CommandBehaviour enumeration are. Essentially CommandBehaviour.CloseConnection does the following:

    When the command is executed, the associated Connection object is closed when the associated DataReader object is closed.

    If you have no special need to specify a CommandBehaviour, then either specify CommandBehaviour.Default, or don't specify one at all. CommandBehaviour.Default is:

    The query may return multiple result sets. Execution of the query may affect the database state. Default sets no CommandBehavior flags, so calling ExecuteReader(CommandBehavior.Default) is functionally equivalent to calling ExecuteReader().

提交回复
热议问题