ExecuteReader 要求已打开且可用的 Connection。连接的当前状态为打开。
别人都提示已关闭,我提示状态为打开,好像有区别的。数据库连接类我的写法是:publicstaticSqlConnectionConnection{get{stringco...
别人都提示已关闭,我提示状态为打开,好像有区别的。
数据库连接类我的写法是:
publicstaticSqlConnection Connection
{
get
{
string connectionString = "server=(local);uid=sa;pwd=sa123456;Trusted_Connection=no;database=OutLight;MultipleActiveResultSets=true";
if (connection == null)
{
connection = newSqlConnection(connectionString);
connection.Open();
}
elseif (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
elseif (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}
public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
调用它的类:
publicstaticIList<ActEvent> GetGetNewEvent(string username)
{
List<ActEvent> list = newList<ActEvent>();
string sql1 = "select lastoperate from SceneInfo where username=@username";
try
{
SqlDataReader reader1 = DBHelper.GetReader(sql1,newSqlParameter("@username", username));
string sql2 = "select * from ActEvent where id>@id order by id desc";
try
{
DataTable table = DBHelper.GetDataSet(sql2, newSqlParameter("@id", lastid));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
ActEvent act = newActEvent();
act.Sevent = "1--"+e.Message + "<br>";
list.Add(act);
return list;
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
ActEvent act = newActEvent();
act.Sevent = "2--" + e.Message + "<br>";
list.Add(act);
return list;
}
}
字数不够了。如果有想看完整程序的我发邮箱
我邮箱是hdwgz@qq.com
谢谢! 展开
数据库连接类我的写法是:
publicstaticSqlConnection Connection
{
get
{
string connectionString = "server=(local);uid=sa;pwd=sa123456;Trusted_Connection=no;database=OutLight;MultipleActiveResultSets=true";
if (connection == null)
{
connection = newSqlConnection(connectionString);
connection.Open();
}
elseif (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
elseif (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}
public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reader;
}
调用它的类:
publicstaticIList<ActEvent> GetGetNewEvent(string username)
{
List<ActEvent> list = newList<ActEvent>();
string sql1 = "select lastoperate from SceneInfo where username=@username";
try
{
SqlDataReader reader1 = DBHelper.GetReader(sql1,newSqlParameter("@username", username));
string sql2 = "select * from ActEvent where id>@id order by id desc";
try
{
DataTable table = DBHelper.GetDataSet(sql2, newSqlParameter("@id", lastid));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
ActEvent act = newActEvent();
act.Sevent = "1--"+e.Message + "<br>";
list.Add(act);
return list;
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
ActEvent act = newActEvent();
act.Sevent = "2--" + e.Message + "<br>";
list.Add(act);
return list;
}
}
字数不够了。如果有想看完整程序的我发邮箱
我邮箱是hdwgz@qq.com
谢谢! 展开
4个回答
展开全部
SqlDataReader 打开后.数据库不会自动关闭或乎睁.需要 SqlDataReader.close(),关闭数据库衫岁连接.reader一直占着数据库连接.所以后边的GetDataSet无法执行.
望采顷岁纳.!!
望采顷岁纳.!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SqlDataReader打开之后默认不会自动关闭连接
这样SqlDataReader使用多了的话会导致连接池无连接可厅告衡用扮做
在使用完SqlDataReader之后进行Close()操作
或者直友凳接使用using(SqlDataReader reader = *************)
这种方式会比较好
这样SqlDataReader使用多了的话会导致连接池无连接可厅告衡用扮做
在使用完SqlDataReader之后进行Close()操作
或者直友凳接使用using(SqlDataReader reader = *************)
这种方式会比较好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用using()
{
}
多好
自动释放资源
{
}
多好
自动释放资源
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要在每次用完山则datareader 数据查完大猜了 就要reder.close() 不然 再次调用的时候就会逗仿棚报错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询