已有打开的与此命令相关联的 datareader 必须首先将它关闭。

blank223 2010-06-11 03:25:33
登录 提示该错误 但是 有部分人能登上 有人登不上 对方服务器是个老服务器 内存1G 使用数据库 sqlserver2005,我没有使用Datareader 请问这个问题是对方服务器造成的还是 我代码造成的 ,如果是我代码 应该是哪里出错?
...全文
107 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
骑猪看海 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 blank223 的回复:]
。。。。。。。。 你怎么知道?
[/Quote]

真的是??因为看你写代码的方式就知道啦,我以前公司有几个都是那学校出来的
blank223 2010-06-11
  • 打赏
  • 举报
回复
好的 先谢谢大家 我明天去客户那里看看 有问题在及时跟大家请教 谢谢
blank223 2010-06-11
  • 打赏
  • 举报
回复
。。。。。。。。 你怎么知道?
Jcomet 2010-06-11
  • 打赏
  • 举报
回复
如果代码没有问题,可能是你取出来的数据不是你想要的,最好调试一下!看取出来的是什么数据
辰爸 2010-06-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zmcici 的回复:]

试试
C# code

dataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);


另外弱弱的问下,LZ是否北大青鸟毕业的
[/Quote]
骑猪看海 2010-06-11
  • 打赏
  • 举报
回复
试试

dataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

另外弱弱的问下,LZ是否北大青鸟毕业的
V-Far 2010-06-11
  • 打赏
  • 举报
回复
关闭SqlDataReader 关闭SqlConnection
wuyq11 2010-06-11
  • 打赏
  • 举报
回复
SqlDataReader 要先关闭,再执行ExecuteNonQuery操作
using (SqlConnection cn = new SqlConnection(“”))
{
SqlCommand cmd1 = new SqlCommand("", cn);
cn.Open();
using (SqlDataReader dr1 = cmd1.ExecuteReader())
{
while (dr1.Read())
{
string sql= "";
SqlConnection conn2 = new SqlConnection("");
SqlCommand cmd2 = new SqlCommand(sql, conn2 );
cmd2.ExecuteNonQuery();
}
}

}
zhang_zhen1234 2010-06-11
  • 打赏
  • 举报
回复
"server=.;uid=sa;pwd=tcaccp;database=pubs;pooling=true;min pool size=5;max pool size=10"
应该不是config问题吧, 是不是你sqldatareader 没关闭啊。

你最好 using(SqlDataReader reader = DBHelper.GetReader(sql, new SqlParameter("@RoleId", roleId)))写
blank223 2010-06-11
  • 打赏
  • 举报
回复
JAVA tomcat可以设置连接池 IIS设置 还是 vs2005?
一步一码 2010-06-11
  • 打赏
  • 举报
回复
你调用的是一个连接池,池中的连接是有数量的,比如是10个连接把,当10同时登入10个用户的时候第11个用户就无法登陆,但是当有一个用户退出登陆是,这样连接池中又多了一个连接(空闲),就有人能等的上去了,但是等有人退出登陆时,你没有释放资源,也会造成链接的不够,所以当有人退出时,要释放对数据库的连接,才能减少对数据库的压力
blank223 2010-06-11
  • 打赏
  • 举报
回复
调用的部分使用了datareader 忘记了使用codesimth自动生成的
public static Role GetRoleByRoleId(int roleId)
{
string sql = "SELECT * FROM Roles WHERE RoleId = @RoleId";

try
{
SqlDataReader reader = DBHelper.GetReader(sql, new SqlParameter("@RoleId", roleId));
if (reader.Read())
{
Role role = new Role();

role.RoleId = (int)reader["roleId"];
role.RoleName = (string)reader["roleName"];
role.OrderId = (int)reader["orderId"];
role.Bz1 = (string)reader["bz1"];

reader.Close();

return role;
}
else
{
reader.Close();
return null;
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw e;
}
}
会不会有问题?
gdlpc 2010-06-11
  • 打赏
  • 举报
回复
...
conn.Open();
...
conn.Close();
mngzilin 2010-06-11
  • 打赏
  • 举报
回复
这些都没有问题,贴出你的调用代码
blank223 2010-06-11
  • 打赏
  • 举报
回复
我使用的dbhelper 我发上来大家看下
public static class DBHelper
{
private static SqlConnection connection;
public static SqlConnection Connection
{
get
{
string connectionString = ConfigurationManager.ConnectionStrings["sql"].ToString();
if (connection == null)
{
connection = new SqlConnection(connectionString);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
else
{
connection.Close();
connection.Open();
}
return connection;
}
}

/// <summary>
/// 获取分页SQL
/// </summary>
/// <param name="tblName">表名</param>
/// <param name="pageSize">每页显示条数</param>
/// <param name="pageIndex">第几页</param>
/// <param name="fldSort">排序字段(最后一个不需要填写正序还是倒序,例如:id asc, name)</param>
/// <param name="fldDir">最后一个排序字段的正序或倒序(true为倒序,false为正序)</param>
/// <param name="condition">条件</param>
/// <returns>返回用于分页的SQL语句</returns>
public static string GetPagerSQL(string tblName, int pageSize, int pageIndex, string fldSort, bool fldDir, string condition)
{
string strDir = fldDir ? " ASC" : " DESC";

if (pageIndex == 1)
{
return "select top " + pageSize.ToString() + " * from " + tblName.ToString()
+ ((string.IsNullOrEmpty(condition)) ? string.Empty : (" where " + condition))
+ " order by " + fldSort.ToString() + strDir;
}
else
{
StringBuilder strSql = new StringBuilder();
strSql.AppendFormat("select top {0} * from {1} ", pageSize, tblName);
strSql.AppendFormat(" where {1} not in (select top {0} {1} from {2} ", pageSize * (pageIndex - 1),
(fldSort.Substring(fldSort.LastIndexOf(',') + 1, fldSort.Length - fldSort.LastIndexOf(',') - 1)), tblName);
if (!string.IsNullOrEmpty(condition))
{
strSql.AppendFormat(" where {0} order by {1}{2}) and {0}", condition, fldSort, strDir);
}
else
{
strSql.AppendFormat(" order by {0}{1}) ", fldSort, strDir);
}
strSql.AppendFormat(" order by {0}{1}", fldSort, strDir);
return strSql.ToString();
}
}

/// <summary>
/// 分页获取数据
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="tblName">表名</param>
/// <param name="fldName">字段名</param>
/// <param name="pageSize">页大小</param>
/// <param name="pageIndex">第几页</param>
/// <param name="fldSort">排序字段</param>
/// <param name="fldDir">升序{False}/降序(True)</param>
/// <param name="condition">条件(不需要where)</param>
public static DataTable GetPageList( string tblName, int pageSize,
int pageIndex, string fldSort, bool fldDir, string condition)
{
string sql = GetPagerSQL(tblName, pageSize, pageIndex, fldSort, fldDir, condition);
return GetDataSet(sql);
}

/// <summary>
/// 得到数据条数
/// </summary>
public static int GetCount( string tblName, string condition)
{
StringBuilder sql = new StringBuilder("select count(*) from " + tblName);
if (!string.IsNullOrEmpty(condition))
sql.Append(" where " + condition);

return GetScalar(sql.ToString());
}

public static int ExecuteCommand(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = cmd.ExecuteNonQuery();
return result;
}

public static int ExecuteCommand(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteNonQuery();
}

public static int GetScalar(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}

public static int GetScalar(params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = Connection;
cmd.CommandText = "Pro_InsertOrder";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(values);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}

public static int GetScalar(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}

public static SqlDataReader GetReader(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ExecuteReader();

return reader;
}

public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader();

return reader;
}

public static DataTable GetDataSet(string safeSql)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}

public static DataTable GetDataSet(string sql, params SqlParameter[] values)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}

}
sprc_lcl 2010-06-11
  • 打赏
  • 举报
回复
你就检查 datareader 吧,全解决方案搜索,不匹配大小写
lirenniao 2010-06-11
  • 打赏
  • 举报
回复
Datareader 出错了吧。再 好好查查,哪使用了。。
blank223 2010-06-11
  • 打赏
  • 举报
回复
在线等解答
IHandler 2010-06-11
  • 打赏
  • 举报
回复
代码的问题
你看看是否有数据访问类,里面用了DataReader

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧