2023年6月21日发(作者:)
微软SqlHelper类中⽂注释和使⽤⽅法
是N年前微软出品的⼀个使⽤⽅法对SQL Server数据库进⾏操作的封装类,随后有⾼⼈根据这个类写了以操作SQL Server之外的数据库,⽽后微软也发布了Enterprise Library企业库组件。但是对于刚开始学习/C#或者中⼩企业应⽤层⾯来说,根据类做简单的数据库访问层的东西已经⾜够⽤了。Enterprise Library企业库虽然⼗分的强⼤,但是⼊⼿和配置都不是那么简单,杀鸡完全不⽤宰⽜⼑。其实这个很古⽼的类还有⼀个很值得学习的地⽅:C#中重载的使⽤。每个查询数据库的⽅法都有8个左右的重载⽅法,对C#⾯向对象思想中的多态性不了解的,看过这些个重载⽅法基本上都会清清楚楚了。此外应该注意的是public sealed class SqlHelper{}:sealed修饰符修饰的类是封闭的类,是不能被继承的。和微软发布的不同,为了⽅便我把⾥⾯的单独列出来了。下⾯的下载中还有、和可供使⽤,分别针对不同的数据库类型。下⾯略微解析⼀下这个类的使⽤⽅法,其中类内部使⽤的私有⽅法不再介绍,因为公共⽅法的使⽤⼤同⼩异,所以就以最简单的ExecuteNonQuery()⽅法作为范例。/C#语⾔:
下述代码是ExecuteNonQuery()的9个重载⽅法。
前3个算是准备查询。//#1-1public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText){}//#1-2public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText,
params SqlParameter[] commandParameters){}//#1-3public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues){}中间3个是执⾏查询。
//#2-1public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText){}//#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters){}//#2-3public static int ExecuteNonQuery(SqlConnection connection, string spName, params object[] parameterValues){}后⾯3个则是⽤于SQL事物查询。
//#3-1public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText){}//#3-2public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters){}//#3-3public static int ExecuteNonQuery(SqlTransaction transaction, string spName, params object[] parameterValues){}再细分,//#2-1public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText){}执⾏的是⽆参数的SQL语句,⽽ //#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType,
string commandText, params SqlParameter[] commandParameters){}执⾏的是包含参数数组的SQL语句(参数数组可以为空)。//#2-3public static int ExecuteNonQuery(SqlConnection connection, string spName,
params object[] parameterValues){}执⾏的则是⽆返回值的存储过程。实际上,#1-1和#1-3//#1-1public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText){}
//#1-3public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues){}重载是为了⽅便⽆参数的SQL语句。⽽#1-3和#2-3//#1-3public static int ExecuteNonQuery(string connectionString, string spName,
params object[] parameterValues){}//#2-3public static int ExecuteNonQuery(SqlConnection connection, string spName,
params object[] parameterValues){}重载只是为了⽅便调⽤存储过程,他们的本质还是和#1-2和#2-2//#1-2public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText,
params SqlParameter[] commandParameters){}//#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType,
string commandText, params SqlParameter[] commandParameters){}⼀样。下⾯是针对重载⽅法的⼀些简单使⽤。
1. ExecuteNonQuery()执⾏⽆参数的SQL语句。/C#语⾔:string sql = "INSERT INTO Customer(Country,Firstname,Lastname) VALUES('USA','Steven','Sun')";if (eNonQuery(tionString, , sql) == 1){ ("添加成功!");}
可以简单的分析⼀下执⾏的过程:1. ExecuteNonQuery()⽅法根据参数不同将会⾸先重载#1-1,.
//#1-1public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText){}在#1-1中设置参数数组为null,既eNonQuery(tionString, , sql,
.
(SqlParameter[])null)。
4. 这时候ExecuteNonQuery()⽅法根据参数不同将会⾸先重载#1-2,.
//#1-2public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText,
params SqlParameter[] commandParameters){}
6. 在#1-2中重载#2-2⽅法执⾏查询。//#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType,
string commandText, params SqlParameter[] commandParameters){}
7. 在#2-2中⾸先要使⽤私有的PrepareCommand()⽅法把参数放⼊SqlCommand中,然后执⾏的ExecuteNonQuery()⽅法(这个是⽆参数的原始⽅法),执⾏成功则返回整数1。8. 剩下的就是⼀些判断和输出的过程了。
也可以⾃⼰写⼀些别的⽅法验证其他重载⽅法的时候,在Visual Studio中按F11可以逐语句的查看执⾏的过程,下⾯两个⽅法的使⽤也是⼀样的,所以就只贴代码了。2. ExecuteNonQuery()执⾏有参数数组的SQL语句。/C#语⾔://修改指定CustomerId的顾客的国籍string sql = "UPDATE Customer SET Country=@Country WHERE CustomerId=@CustomerId";SqlParameter[] param = new SqlParameter[]{ new SqlParameter("@Version", r), new SqlParameter("@CustomerId", )};param[0].Value = "England";param[1].Value = 5;if (eNonQuery(tionString, , sql, param) == 1){ ("修改成功!");}
3. ExecuteNonQuery()执⾏⽆返回值的存储过程。SQL Server语⾔:CREATE PROCEDURE [dbo].[SP_ExecuteNonQuery]ASBEGININSERT INTO Customer VALUES('Japan','Beautiful','Girl')END
/C#语⾔:if (eNonQuery(tionString, "SP_ExecuteNonQuery") == 1){ ("执⾏⽆参数存储过程成功");}
其他⽅法都是类似的,这个类中我们常⽤的⽅法如下:1. ExecuteNonQuery(): 执⾏简单的⽆返回值的查询。2. ExecuteDataset(): 返回Dataset的查询,相当于返回⼀个数组。3. ExecuteReader(): 使⽤DataReader读取数据。(注:少量数据的情况下使⽤SqlDataReader的效率⾼于使⽤Dataset)4. ExecuteScalar(): 返回结果集中的第⼀⾏第⼀列,相当于返回单个值。其他的⽅法使⽤的较少,就不介绍了。强烈建议使⽤Visual Studio 2010调试这些程序,下⾯是这⼏个类的下载地址,如有问题,欢迎和我⼀起探讨。
其他的⽅法使⽤的较少,就不介绍了。强烈建议使⽤调试这些程序,下⾯是这⼏个类的下载地址,如有问题,欢迎和我⼀起探讨。
2023年6月21日发(作者:)
微软SqlHelper类中⽂注释和使⽤⽅法
是N年前微软出品的⼀个使⽤⽅法对SQL Server数据库进⾏操作的封装类,随后有⾼⼈根据这个类写了以操作SQL Server之外的数据库,⽽后微软也发布了Enterprise Library企业库组件。但是对于刚开始学习/C#或者中⼩企业应⽤层⾯来说,根据类做简单的数据库访问层的东西已经⾜够⽤了。Enterprise Library企业库虽然⼗分的强⼤,但是⼊⼿和配置都不是那么简单,杀鸡完全不⽤宰⽜⼑。其实这个很古⽼的类还有⼀个很值得学习的地⽅:C#中重载的使⽤。每个查询数据库的⽅法都有8个左右的重载⽅法,对C#⾯向对象思想中的多态性不了解的,看过这些个重载⽅法基本上都会清清楚楚了。此外应该注意的是public sealed class SqlHelper{}:sealed修饰符修饰的类是封闭的类,是不能被继承的。和微软发布的不同,为了⽅便我把⾥⾯的单独列出来了。下⾯的下载中还有、和可供使⽤,分别针对不同的数据库类型。下⾯略微解析⼀下这个类的使⽤⽅法,其中类内部使⽤的私有⽅法不再介绍,因为公共⽅法的使⽤⼤同⼩异,所以就以最简单的ExecuteNonQuery()⽅法作为范例。/C#语⾔:
下述代码是ExecuteNonQuery()的9个重载⽅法。
前3个算是准备查询。//#1-1public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText){}//#1-2public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText,
params SqlParameter[] commandParameters){}//#1-3public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues){}中间3个是执⾏查询。
//#2-1public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText){}//#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters){}//#2-3public static int ExecuteNonQuery(SqlConnection connection, string spName, params object[] parameterValues){}后⾯3个则是⽤于SQL事物查询。
//#3-1public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText){}//#3-2public static int ExecuteNonQuery(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters){}//#3-3public static int ExecuteNonQuery(SqlTransaction transaction, string spName, params object[] parameterValues){}再细分,//#2-1public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText){}执⾏的是⽆参数的SQL语句,⽽ //#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType,
string commandText, params SqlParameter[] commandParameters){}执⾏的是包含参数数组的SQL语句(参数数组可以为空)。//#2-3public static int ExecuteNonQuery(SqlConnection connection, string spName,
params object[] parameterValues){}执⾏的则是⽆返回值的存储过程。实际上,#1-1和#1-3//#1-1public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText){}
//#1-3public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues){}重载是为了⽅便⽆参数的SQL语句。⽽#1-3和#2-3//#1-3public static int ExecuteNonQuery(string connectionString, string spName,
params object[] parameterValues){}//#2-3public static int ExecuteNonQuery(SqlConnection connection, string spName,
params object[] parameterValues){}重载只是为了⽅便调⽤存储过程,他们的本质还是和#1-2和#2-2//#1-2public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText,
params SqlParameter[] commandParameters){}//#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType,
string commandText, params SqlParameter[] commandParameters){}⼀样。下⾯是针对重载⽅法的⼀些简单使⽤。
1. ExecuteNonQuery()执⾏⽆参数的SQL语句。/C#语⾔:string sql = "INSERT INTO Customer(Country,Firstname,Lastname) VALUES('USA','Steven','Sun')";if (eNonQuery(tionString, , sql) == 1){ ("添加成功!");}
可以简单的分析⼀下执⾏的过程:1. ExecuteNonQuery()⽅法根据参数不同将会⾸先重载#1-1,.
//#1-1public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText){}在#1-1中设置参数数组为null,既eNonQuery(tionString, , sql,
.
(SqlParameter[])null)。
4. 这时候ExecuteNonQuery()⽅法根据参数不同将会⾸先重载#1-2,.
//#1-2public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText,
params SqlParameter[] commandParameters){}
6. 在#1-2中重载#2-2⽅法执⾏查询。//#2-2public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType,
string commandText, params SqlParameter[] commandParameters){}
7. 在#2-2中⾸先要使⽤私有的PrepareCommand()⽅法把参数放⼊SqlCommand中,然后执⾏的ExecuteNonQuery()⽅法(这个是⽆参数的原始⽅法),执⾏成功则返回整数1。8. 剩下的就是⼀些判断和输出的过程了。
也可以⾃⼰写⼀些别的⽅法验证其他重载⽅法的时候,在Visual Studio中按F11可以逐语句的查看执⾏的过程,下⾯两个⽅法的使⽤也是⼀样的,所以就只贴代码了。2. ExecuteNonQuery()执⾏有参数数组的SQL语句。/C#语⾔://修改指定CustomerId的顾客的国籍string sql = "UPDATE Customer SET Country=@Country WHERE CustomerId=@CustomerId";SqlParameter[] param = new SqlParameter[]{ new SqlParameter("@Version", r), new SqlParameter("@CustomerId", )};param[0].Value = "England";param[1].Value = 5;if (eNonQuery(tionString, , sql, param) == 1){ ("修改成功!");}
3. ExecuteNonQuery()执⾏⽆返回值的存储过程。SQL Server语⾔:CREATE PROCEDURE [dbo].[SP_ExecuteNonQuery]ASBEGININSERT INTO Customer VALUES('Japan','Beautiful','Girl')END
/C#语⾔:if (eNonQuery(tionString, "SP_ExecuteNonQuery") == 1){ ("执⾏⽆参数存储过程成功");}
其他⽅法都是类似的,这个类中我们常⽤的⽅法如下:1. ExecuteNonQuery(): 执⾏简单的⽆返回值的查询。2. ExecuteDataset(): 返回Dataset的查询,相当于返回⼀个数组。3. ExecuteReader(): 使⽤DataReader读取数据。(注:少量数据的情况下使⽤SqlDataReader的效率⾼于使⽤Dataset)4. ExecuteScalar(): 返回结果集中的第⼀⾏第⼀列,相当于返回单个值。其他的⽅法使⽤的较少,就不介绍了。强烈建议使⽤Visual Studio 2010调试这些程序,下⾯是这⼏个类的下载地址,如有问题,欢迎和我⼀起探讨。
其他的⽅法使⽤的较少,就不介绍了。强烈建议使⽤调试这些程序,下⾯是这⼏个类的下载地址,如有问题,欢迎和我⼀起探讨。
发布评论