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