首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

DAL层SqlDataReader的小疑点 当日结贴 求回复

2012-05-29 
DAL层SqlDataReader的小问题当日结贴 求回复DAL层下DataAccess.csT-SQL部分有一个:[codeC#][/code] publi

DAL层SqlDataReader的小问题 当日结贴 求回复
DAL层下DataAccess.cs

 T-SQL部分有一个:
[code=C#][/code] public SqlDataReader ExecSQLReturnDataReader(string SQL)
  {
   
  SqlConnection conn = createConn();
  if (conn.State == ConnectionState.Closed)
  {
  conn.Open();
  }

  SqlCommand cmd = new SqlCommand(SQL, conn);
  cmd.CommandType = CommandType.Text;
  SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  cmd.Parameters.Clear();
  return dr;

  }

Stored Procedure部分有一个:
public SqlDataReader ExecSPReturnDataReader(string SP_Name)
  {
  SqlConnection conn = createConn();
  if (conn.State == ConnectionState.Closed)
  {
  conn.Open();
  }

  SqlCommand cmd = new SqlCommand(SP_Name, connection);
  cmd.CommandType = CommandType.Text;
  SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  cmd.Parameters.Clear();
  return dr;
   
  }

这两段SqlDataReader的代码基本完全一样,这是对的吗?两段有问题吗?而且这两段即使不写程序也可以运行,程序就是简单的增删改的功能。那这两段看上去就不是必须的了,这两段的作用是什么呢?

[解决办法]
一样的,作用就查询多行多列数据
[解决办法]
确实重了。只保留一个就行,如果程序中没地方调用它们,都删了也没关系。但想要的时候就要重新写了。
[解决办法]
public SqlDataReader ExecSQLReturnDataReader(string SQL) 执行sql语句查询

public SqlDataReader ExecSPReturnDataReader(string SP_Name) 执行存储过程查询
在这里指定错误,应是cmd.CommandType = CommandType.StoredProcedure;

可以这样写public SqlDataReader ExecReturnDataReader(string sqlstring, CommandType type)嘛
[解决办法]

C# code
//执行语句查询public SqlDataReader ExecSQLReturnDataReader(string SQL)  {      SqlConnection conn = createConn();  if (conn.State == ConnectionState.Closed)  {  conn.Open();  }  SqlCommand cmd = new SqlCommand(SQL, conn);  cmd.CommandType = CommandType.Text;  SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);  cmd.Parameters.Clear();  return dr;  }//执行存储过程查询public SqlDataReader ExecSPReturnDataReader(string SP_Name)  {  SqlConnection conn = createConn();  if (conn.State == ConnectionState.Closed)  {  conn.Open();  }  SqlCommand cmd = new SqlCommand(SP_Name, connection);  cmd.CommandType = CommandType.Text;  SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);  cmd.Parameters.Clear();  return dr;      }
[解决办法]
上面是执行SQL语句的是不需要cmd.CommandType = CommandType.Text;这个的;
下面那个是执行存储过程的:你上面已经声明了SqlConnection conn = createConn();
所以SqlCommand cmd = new SqlCommand(SP_Name, connection);这个要改成SqlCommand cmd = new SqlCommand(SP_Name, conn);


热点排行