如何在C#中构建一个通用的dataReader的方法? 由于查询的SQL语句需要查找的项不一样,所以不确定他要返回dataReader有多少,那位高手指点一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 倒推一下:由于sqldatareader实例化的时候必须通过:mysqlcommand.executereader()方法(微软规定的,mysqlcommand是sqlcommand一个实例。),而sqlcommand的构造函数初始化是这个样子的:sqlcommand(querystring,conntion)。倒退到这里,我觉得应该是querystring的问题。。哈哈。既然这样,可以写一个封装好的类,接收查询参数,然后返回一个字符串作为sqlcommand的查询字符串。不好意思。偶刚刚开始学习呵呵。 你可以自己构建参数列表,以下代码供你参考://这个方法用来构建参数 private static void PrepareCommand(string procName,SqlTransaction trans,SqlParameter[] parms) { cmd.Connection = con; cmd.CommandText = procName; if(trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.StoredProcedure; if(parms!=null) { foreach (SqlParameter parm in parms) cmd.Parameters.Add(parm); } }//以下方法用来返回多种SqlDataReader#region 返回SqlDataReader。 ///<summary> ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。 ///</summary> ///<param name="procName">存储过程</param> ///<param name="parms">SqlParameter数组</param> ///<returns>SqlDataReader对象</returns> public SqlDataReader DataReader(string procName) { SqlDataReader dr = null; PrepareCommand(procName,null,null); OpenConnection(); dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr ; } ///<summary> ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。 ///</summary> ///<param name="procName">存储过程</param> ///<param name="parms">SqlParameter数组</param> ///<returns>SqlDataReader对象</returns> public SqlDataReader DataReader(string procName,SqlParameter[] parms) { SqlDataReader dr = null; PrepareCommand(procName,null,parms); OpenConnection(); dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return dr ; } ///<summary> ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。 ///</summary> ///<param name="procName">存储过程</param> ///<param name="trans">SQL Server 数据库中处理的 Transact-SQL 事务</param> ///<returns>SqlDataReader对象</returns> public SqlDataReader DataReader(string procName,SqlTransaction trans) { SqlDataReader dr = null; PrepareCommand(procName,trans,null); OpenConnection(); dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr ; } ///<summary> ///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。 ///</summary> ///<param name="procName">存储过程</param> ///<param name="parms">SqlParameter数组</param> ///<param name="trans">SQL Server 数据库中处理的 Transact-SQL 事务</param> ///<returns>SqlDataReader对象</returns> public SqlDataReader DataReader(string procName,SqlParameter[] parms,SqlTransaction trans) { SqlDataReader dr = null; PrepareCommand(procName,trans,parms); OpenConnection(); dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return dr ; } #endregion C#中线程的使用问题 求教WinForm一个关于Button的问题 C#中如何改变文件的大小(help me) 关于combobox控件的问题 电脑com口与第三方设备的com不一致怎么办?比如电脑com口名字是com9,而设备用的是com1,怎么办? down了一个上海某公司做的软件,发现了两个配置文件,但不知如何使用,请高手指点 怎么逃出循环体??? 水晶报表运行死机问题 有关数据库->dateset->XML->dateset->数据库的问题 如何将文本框的值传入超链接中? 解释 弱弱的问一个问题!
由于sqldatareader实例化的时候必须通过:mysqlcommand.executereader()方法(微软规定的,mysqlcommand是sqlcommand一个实例。),而sqlcommand的构造函数初始化是这个样子的:
sqlcommand(querystring,conntion)。
倒退到这里,我觉得应该是querystring的问题。。哈哈。既然这样,可以写一个封装好的类,接收查询参数,然后返回一个字符串作为sqlcommand的查询字符串。
不好意思。偶刚刚开始学习呵呵。
private static void PrepareCommand(string procName,SqlTransaction trans,SqlParameter[] parms)
{
cmd.Connection = con;
cmd.CommandText = procName;
if(trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.StoredProcedure;
if(parms!=null)
{
foreach (SqlParameter parm in parms)
cmd.Parameters.Add(parm);
}
}
//以下方法用来返回多种SqlDataReader
#region 返回SqlDataReader。
///<summary>
///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
///</summary>
///<param name="procName">存储过程</param>
///<param name="parms">SqlParameter数组</param>
///<returns>SqlDataReader对象</returns>
public SqlDataReader DataReader(string procName)
{
SqlDataReader dr = null;
PrepareCommand(procName,null,null);
OpenConnection();
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr ;
}
///<summary>
///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
///</summary>
///<param name="procName">存储过程</param>
///<param name="parms">SqlParameter数组</param>
///<returns>SqlDataReader对象</returns>
public SqlDataReader DataReader(string procName,SqlParameter[] parms)
{
SqlDataReader dr = null;
PrepareCommand(procName,null,parms);
OpenConnection();
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr ;
}
///<summary>
///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
///</summary>
///<param name="procName">存储过程</param>
///<param name="trans">SQL Server 数据库中处理的 Transact-SQL 事务</param>
///<returns>SqlDataReader对象</returns>
public SqlDataReader DataReader(string procName,SqlTransaction trans)
{
SqlDataReader dr = null;
PrepareCommand(procName,trans,null);
OpenConnection();
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr ;
}
///<summary>
///返回SqlDataReader,在使用后请关闭本对象,同时将自动调用CloseConnection()来关闭数据库连接。
///</summary>
///<param name="procName">存储过程</param>
///<param name="parms">SqlParameter数组</param>
///<param name="trans">SQL Server 数据库中处理的 Transact-SQL 事务</param>
///<returns>SqlDataReader对象</returns>
public SqlDataReader DataReader(string procName,SqlParameter[] parms,SqlTransaction trans)
{
SqlDataReader dr = null;
PrepareCommand(procName,trans,parms);
OpenConnection();
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr ;
}
#endregion