读书人

调用数据层参数传递有关问题

发布时间: 2012-02-11 09:51:34 作者: rapoo

调用数据层参数传递问题!
假设要实现这样的功能:
public void chkuser()
{
string sql = "select * from Table where name = @username ";
SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings[ "ConnStr "]);//ConnStr为数据库连接语句
SqlCommand cmd = new SqlCommand(sql,cn);
cmd.Parameters.Add( "@username ",SqlDbType.VarChar,50).Value=username.Text//username.Text为表单用户输入的用户名
............
}



数据层:

public static SqlDataReader ExecuteReader(string sql, SqlParameter[] args)
{
cn = new SqlConnection(ConnStr);
cmd = new SqlCommand(sql,cn);
foreach(SqlParameter[] i in args)
{
cmd.Parameters.Add(args);
}
try
{
cn.Open();


SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return dr;
}
catch
{
cn.Close();
throw;
}
}
==========================================================================
我的问题是我如何把@username,SqlDbType.VarChar,50 这3个参数传到数据层里面去,以便返回一个SqlDataReader对象?当然数据层的这个函数需要改动!

[解决办法]
一般三层体系中返回SqlDataReader对象比较麻烦,因为SqlDataReader需要永久连接,这样连接的关闭时机就很难把控
[解决办法]
数据层里取到的SqlParameter[]数组不就是你要执行的SQL语句的参数集合吗。 已经传进来了。

你想取出这些值的话就可以foreach取出来就可以了啊

读书人网 >asp.net

热点推荐