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

publicclassDBHelper{privatestaticSqlConnectionconnection;publicstaticSqlConnectionCon... public class DBHelper
{
private static SqlConnection connection;
public static SqlConnection Connection
{
get
{
string connectionString = ConfigurationManager.ConnectionStrings["JcodeConnectionStrings"].ConnectionString;
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();
}
return connection;
}
}

//取所有记录
public static DataView GetTableData(string sqlString)
{
SqlDataAdapter da = new SqlDataAdapter(sqlString,Connection);
DataSet ds = new DataSet();
da.Fill(ds, "Jcode");

return ds.Tables["Jcode"].DefaultView;
}

/// <summary>
/// 实例化sqlCommand对象返回sqlDataReader
/// </summary>
/// <param name="safeSql"></param>
/// <returns></returns>
public static SqlDataReader GetReader(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ex.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 int ExcuteCommand(string sql)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
int result=cmd.ExecuteNonQuery();
return result;
}
**************************

行 54: {
行 55: SqlCommand cmd = new SqlCommand(safeSql, Connection);
行 56: SqlDataReader reader = cmd.ExecuteReader();
行 57: return reader;
行 58: }

InvalidOperationException: 已有打开的与此命令相关联的 DataReader,必须首先将它关闭
展开
 我来答
创作者zUGuT8zi7w
2020-05-28 · TA获得超过4717个赞
知道大有可为答主
回答量:3132
采纳率:32%
帮助的人:206万
展开全部
???什么问题
什么情况
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者Ra4W8U6axI
2020-02-10 · TA获得超过4158个赞
知道大有可为答主
回答量:3182
采纳率:34%
帮助的人:234万
展开全部
稍微标准点的写法
SqlConnection
cn
=
null;
SqlCommand
cmd
=
null;
SqlDataReader
dr
=
null;
cn
=
new
SqlConnection();
cn.ConnectionString
=
"data
source=.;initial
catalog=oa;integrated
security=sspi";
cmd
=
new
SqlCommand("select
是否已阅
from
Msg
where
收信人='"
+
b
+
"'
and
是否已阅
='否'",
cn);
try
{
cn.Open();
SqlDataReader
dr
=
cmd.ExecuteReader();
if
(dr
!=
null)
{
if
(dr.Read())
{
Label1.Text
=
dr.GetString(0).ToString();
Label6.Text
=
"您有新短信,请注意查收!";
}
}
}
catch
(Exception
ex)
{
Response.Write(ex.Message);
}
finally
{
if
(dr
!=
null)
dr.Close();
if
(cmd
!=
null)
cmd.Dispose();
if
(cn
!=
null)
cn.Dispose();
}
程序还有很多问题不规范
比如
select
是否已阅
from
Msg
where
收信人='"
+
b
+
"'
and
是否已阅
='否'"
==
既然知道条件是
是否已阅
='否',那就根本没必要
select
是否已阅...
改成
select
1
from
Msg
where
收信人='"
+
b
+
"'
and
是否已阅
='否'"即可
再比如
刚才使用的是拼接sql语句,已经基本被摒弃了,网上搜搜"参数化语句"和"sql注入"就知道了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者w5UBIE2k6u
2019-08-06 · TA获得超过3835个赞
知道大有可为答主
回答量:3146
采纳率:35%
帮助的人:267万
展开全部
关闭数据库连接
再来一次打开数据库连接
reader连接
我以前这样写过
很耗资源
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者AV6NGK9ntQ
2019-02-18 · TA获得超过3837个赞
知道小有建树答主
回答量:3248
采纳率:34%
帮助的人:434万
展开全部
你去电脑专区去问问吧,或许那里有人能给你正确的答案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式