日期:2014-05-18  浏览次数:20953 次

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);