日期:2014-05-17  浏览次数:20800 次

【新人求助】ExecuteReader 要求已打开且可用的连接。连接的当前状态为已关闭。


    public int RunProc(string procName, SqlParameter[] prams)
    {
        SqlCommand cmd = CreateCommand(procName, prams);
        try
        {
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            SystemError.SystemLog(ex.Message);
        }
        Close();
        return (int)cmd.Parameters["ReturnValue"].Value;
    }

    public void RunProc(string procName, out SqlDataReader dataReader)
    {
SqlCommand cmd = CreateCommand(procName, null);
        dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }

    public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
    {
        SqlCommand cmd = CreateCommand(procName, prams);
        dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }

------解决方案--------------------
Close();
你写了什么,是不是close了reader
那当然出错

int r = (int)cmd.Parameters["ReturnValue"].Value;
Close();
return r;
------解决方案--------------------
你的连接呢?
SqlConnection对象在哪里,有没有调用Open()
------解决方案--------------------
要显式调用数据库连接对象的open,要不然就会这样子
------解决方案--------------------
引用:
Quote: 引用:

你的连接呢?
SqlConnection对象在哪里,有没有调用Open()

我的database.cs 都在这了    不太懂


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

/// <su