已有打开的与此connand相关联的Datareader,必须首先将他关闭 求回复,属实有点奇怪

史上最菜的搬运抄袭工 2019-01-10 10:30:46
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace MyBookShop.DAL
{
public static class DBHelper
{

//SQL数据库的连接
private static SqlConnection connection;
public static SqlConnection Connection
{
get
{
string connectionString = "Data Source=.;Initial Catalog=MyKTV;Integrated Security=True";
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 int ExecuteCommand(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = cmd.ExecuteNonQuery();
return result;
}
//执行不带参数数据记录的增、删、改操作,并返回执行后的结果值
public static int Command(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
int result = (int)(cmd.ExecuteScalar());
return result;
}

//返回执行不带参数SQL语句后的阅读器
public static SqlDataReader GetReader(string safeSql)
{

SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}

//返回执行不带参数SQL语句后的结果数据表
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];
}
}
}

为什么我第一次使用SqlDataAdapter会弹出对话框报错,我前面没有用到这个,郁闷,网上找了几个小时


...全文
225 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2019-01-29
  • 打赏
  • 举报
回复
sqldatareader 不能连续使用。 建议你改用 datatable 来接收数据, 简单很多。
Apq001 2019-01-29
  • 打赏
  • 举报
回复
你应该弄一个变量把DBHelper.GetReader的结果存起来,这个方法是不能像你这样多次调用的。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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