读书人

DAL层SqlDataReader的小疑点 当日结贴

发布时间: 2012-05-29 12:16:00 作者: rapoo

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


读书人网 >C#

热点推荐