【新人求助】ExecuteReader 要求已打开且可用的连接。连接的当前状态为已关闭。 Close();你写了什么,是不是close了reader那当然出错int r = (int)cmd.Parameters["ReturnValue"].Value;Close();return r; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改了还是不行哇 提示是这句出的问题 dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); 你的连接呢?SqlConnection对象在哪里,有没有调用Open() 要显式调用数据库连接对象的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;/// <summary>/// 通用的数据库处理类,通过ADO.NET与数据库连接/// </summary>public class Database:IDisposable{ private SqlConnection con; public Database() { // // TODO: Add constructor logic here // } /// <summary> /// 打开数据库连接 /// </summary> private void Open() { if (con == null) { con = new SqlConnection(ConfigurationSettings.AppSettings["CONNECTIONSTRING"].ToString()); } if (con.State == ConnectionState.Closed) { try { con.Open(); } catch (Exception ex) { SystemError.SystemLog(ex.Message); } } } /// <summary> /// 关闭数据库连接 /// </summary> public void Close() { if (con != null) { if (con.State == ConnectionState.Open) { con.Close(); } } } public void Dispose() { if (con != null) { con.Dispose(); con = null; } } /// <summary> /// 执行存储过程 /// </summary> public int RunProc(string procName) { SqlCommand cmd = CreateCommand(procName, null); try { cmd.ExecuteNonQuery(); } catch (Exception ex) { SystemError.SystemLog(ex.Message); } Close(); return (int)cmd.Parameters["ReturnValue"].Value; } public int RunProc(string procName, SqlParameter[] prams) { SqlCommand cmd = CreateCommand(procName, prams); try { cmd.ExecuteNonQuery(); } catch (Exception ex) { SystemError.SystemLog(ex.Message); } int r = (int)cmd.Parameters["ReturnValue"].Value; Close(); return r; } 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); } /// <summary> /// 创建一个SqlCommand对象以此来执行存储过程 /// </summary> private SqlCommand CreateCommand(string procName, SqlParameter[] prams) { Open(); SqlCommand cmd = new SqlCommand(procName, con); cmd.CommandType = CommandType.StoredProcedure; if (prams != null) { foreach (SqlParameter parameter in prams) { cmd.Parameters.Add(parameter); } } cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return cmd; } /// <summary> /// 生成存储过程参数 /// </summary> public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) { SqlParameter param; if (Size > 0) { param = new SqlParameter(ParamName, DbType, Size); } else { param = new SqlParameter(ParamName, DbType); } param.Direction = Direction; if (!(Direction == ParameterDirection.Output && Value == null)) { param.Value = Value; } return param; } public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value) { return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value); } public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size) { return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null); } public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size) { return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null); } public SqlDataReader ExecuteSQL(string sql) { SqlDataReader dr = null; Open(); SqlCommand cmd = new SqlCommand(sql, con); cmd.CommandType = CommandType.Text; dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr; }} 我的database.cs 都在这了 不太懂using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Data.SqlClient;using System.Configuration;/// <summary>/// 通用的数据库处理类,通过ADO.NET与数据库连接/// </summary>public class Database:IDisposable{ private SqlConnection con; public Database() { // // TODO: Add constructor logic here // } /// <summary> /// 打开数据库连接 /// </summary> private void Open() { if (con == null) { con = new SqlConnection(ConfigurationSettings.AppSettings["CONNECTIONSTRING"].ToString()); } if (con.State == ConnectionState.Closed) { try { con.Open(); } catch (Exception ex) { SystemError.SystemLog(ex.Message); } } } /// <summary> /// 关闭数据库连接 /// </summary> public void Close() { if (con != null) { if (con.State == ConnectionState.Open) { con.Close(); } } } public void Dispose() { if (con != null) { con.Dispose(); con = null; } } /// <summary> /// 执行存储过程 /// </summary> public int RunProc(string procName) { SqlCommand cmd = CreateCommand(procName, null); try { cmd.ExecuteNonQuery(); } catch (Exception ex) { SystemError.SystemLog(ex.Message); } Close(); return (int)cmd.Parameters["ReturnValue"].Value; } public int RunProc(string procName, SqlParameter[] prams) { SqlCommand cmd = CreateCommand(procName, prams); try { cmd.ExecuteNonQuery(); } catch (Exception ex) { SystemError.SystemLog(ex.Message); } int r = (int)cmd.Parameters["ReturnValue"].Value; Close(); return r; } 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); } /// <summary> /// 创建一个SqlCommand对象以此来执行存储过程 /// </summary> private SqlCommand CreateCommand(string procName, SqlParameter[] prams) { Open(); SqlCommand cmd = new SqlCommand(procName, con); cmd.CommandType = CommandType.StoredProcedure; if (prams != null) { foreach (SqlParameter parameter in prams) { cmd.Parameters.Add(parameter); } } cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return cmd; } /// <summary> /// 生成存储过程参数 /// </summary> public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) { SqlParameter param; if (Size > 0) { param = new SqlParameter(ParamName, DbType, Size); } else { param = new SqlParameter(ParamName, DbType); } param.Direction = Direction; if (!(Direction == ParameterDirection.Output && Value == null)) { param.Value = Value; } return param; } public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value) { return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value); } public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size) { return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null); } public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size) { return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null); } public SqlDataReader ExecuteSQL(string sql) { SqlDataReader dr = null; Open(); SqlCommand cmd = new SqlCommand(sql, con); cmd.CommandType = CommandType.Text; dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr; }}仔细找找你的代码,比如数据库打开后,用完要关闭,dataread用完也要及时关闭。这个是你代码存在没关闭的对象造成的,仔细检查下把! ASP.NET中如何实现flash菜单按钮的透明化!!!高手请进 asp.net中,怎样去创建一个xml文件? 一个很急的问题,入门问题,谢谢 asp.netC#支持正样的语法吗?谢谢,从来没学过,就是<a href="show.aspx?no=<%=id%>>你好</a> 急!!!!在.net中,如何动态生成行?请各位高手帮帮忙!!!! 数据库设计的一个问题讨论!!! 怎样写 个人助理 锁定父页面 在Linux下怎么写asp.net程序? 关于水晶报表IE直接打印(ActiveX)时的边框问题 高手请指导一下在SOSO地图处添加多个自定义标记--就70分了都给了--急急急!!!
改了还是不行哇 提示是这句出的问题 dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
SqlConnection对象在哪里,有没有调用Open()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;/// <summary>
/// 通用的数据库处理类,通过ADO.NET与数据库连接
/// </summary>
public class Database:IDisposable
{
private SqlConnection con;
public Database()
{
//
// TODO: Add constructor logic here
//
} /// <summary>
/// 打开数据库连接
/// </summary>
private void Open()
{
if (con == null)
{
con = new SqlConnection(ConfigurationSettings.AppSettings["CONNECTIONSTRING"].ToString());
}
if (con.State == ConnectionState.Closed)
{
try
{
con.Open();
}
catch (Exception ex)
{
SystemError.SystemLog(ex.Message);
}
}
} /// <summary>
/// 关闭数据库连接
/// </summary>
public void Close()
{
if (con != null)
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
} public void Dispose()
{
if (con != null)
{
con.Dispose();
con = null;
}
} /// <summary>
/// 执行存储过程
/// </summary>
public int RunProc(string procName)
{
SqlCommand cmd = CreateCommand(procName, null);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
SystemError.SystemLog(ex.Message);
}
Close();
return (int)cmd.Parameters["ReturnValue"].Value;
} public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateCommand(procName, prams);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
SystemError.SystemLog(ex.Message);
}
int r = (int)cmd.Parameters["ReturnValue"].Value;
Close();
return r;
} 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);
} /// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
return cmd;
} /// <summary>
/// 生成存储过程参数
/// </summary>
public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param;
if (Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
param = new SqlParameter(ParamName, DbType);
}
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
}
return param;
} public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
} public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
} public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
} public SqlDataReader ExecuteSQL(string sql)
{
SqlDataReader dr = null;
Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;/// <summary>
/// 通用的数据库处理类,通过ADO.NET与数据库连接
/// </summary>
public class Database:IDisposable
{
private SqlConnection con;
public Database()
{
//
// TODO: Add constructor logic here
//
} /// <summary>
/// 打开数据库连接
/// </summary>
private void Open()
{
if (con == null)
{
con = new SqlConnection(ConfigurationSettings.AppSettings["CONNECTIONSTRING"].ToString());
}
if (con.State == ConnectionState.Closed)
{
try
{
con.Open();
}
catch (Exception ex)
{
SystemError.SystemLog(ex.Message);
}
}
} /// <summary>
/// 关闭数据库连接
/// </summary>
public void Close()
{
if (con != null)
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
} public void Dispose()
{
if (con != null)
{
con.Dispose();
con = null;
}
} /// <summary>
/// 执行存储过程
/// </summary>
public int RunProc(string procName)
{
SqlCommand cmd = CreateCommand(procName, null);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
SystemError.SystemLog(ex.Message);
}
Close();
return (int)cmd.Parameters["ReturnValue"].Value;
} public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateCommand(procName, prams);
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
SystemError.SystemLog(ex.Message);
}
int r = (int)cmd.Parameters["ReturnValue"].Value;
Close();
return r;
} 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);
} /// <summary>
/// 创建一个SqlCommand对象以此来执行存储过程
/// </summary>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
cmd.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null));
return cmd;
} /// <summary>
/// 生成存储过程参数
/// </summary>
public SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param;
if (Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
param = new SqlParameter(ParamName, DbType);
}
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
}
return param;
} public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
} public SqlParameter CreateOutParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.Output, null);
} public SqlParameter CreateReturnParam(string ParamName, SqlDbType DbType, int Size)
{
return CreateParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
} public SqlDataReader ExecuteSQL(string sql)
{
SqlDataReader dr = null;
Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.Text;
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
}
仔细找找你的代码,比如数据库打开后,用完要关闭,dataread用完也要及时关闭。这个是你代码存在没关闭的对象造成的,仔细检查下把!