最强.NET SQLServer 操作类 SqlExecuteXY 源代码发布 使用教程文档
2010-12-09 15:41
549 查看
这个类是自己写的,一直用了好久,个人感觉非常好用.常常繁琐的 SQL 操作 往往 一两条语句就能实现.而且性能卓越,不用考虑线程安全问题.
所以和大家分享下 并且还支持多库操作
源代码下载地址:
http://luyikk.download.csdn.net/
里面寻找 最新的 SqlExecuteXY 项目
使用方法:
1.配置 配置文件
添加下面代码到你的配置文件内
Winfrom:app.config
WEB: Web.config
说明:
DefautConnectionString 数据库连接字符串 (因为此类支持多库操作 所以它是默认的链接字符串)
MaxCount 对象池最大对象数
其他配置:
关于多库配置:
你可以通过这样配置 配置文件 以达到连接多个数据库
2.创建SqlExecuteXY 对象
常规创建方法:
其他创建方法:
注意:此SQLExecuteXY对象使用完后一定要Dispose()否者它将无法被对象池回收,后果自己设想.
2.1 多库的对象创建
如果使用不带参数的构造函数 那么创建出来的SQL 对象的连接字符串将是 DefautConnectionString 所配置的字符串,如何达到多库访问
其实很简单. 只要在构造方法里面带入 配置 连接字符串 的 name 属性就行好了
例:
或者
最常用的语句 SELECT :
1.使用SqlExecuteScalar 返回第一行第一列
数据库代码:
C#:
2.返回dataset:
3.返回SqlDataReader
SELECT 的类化表操作:
类化表,学过LINQ TO SQL 的一定不会陌生.就是将表看成一个类.把里面的一行数据 看成 一个对象.那么表数据 就是这个对象的集合
将上面的表映射成类的代码:
关于 列于C#类型的转换 请看考微软的 DBTYPE 类说明
1.返回所有表中的集合
2.查找所有QQ为 123321的集合
添加 更新 删除 操作:
添加 更新 删除 通常使用 SqlExecuteNonQuery 方法
案例:
UPDATA:
INSERT:
DELETE:
基于 类化表 的INSERT UPDATE DELETE
INSERT :
UPDATE:
DELETE:
调用存储过程:
注意:要将bolIsProcedure 设置成 TRUE
事务的处理:
BeginTrans() 开始一个事务
CommitTrans()提交事务
RollbackTrans()回滚事务
大部分操作都在这里,我相信大家可以举一反三
谢谢
所以和大家分享下 并且还支持多库操作
源代码下载地址:
http://luyikk.download.csdn.net/
里面寻找 最新的 SqlExecuteXY 项目
使用方法:
1.配置 配置文件
<connectionStrings> <add name="DefautConnectionString" connectionString="server=192.168.134.153;Database=AutoAudit;User Id=sa;Password=123456;connection reset=false;connection lifetime=5;min pool size=1;max pool size=20" providerName="System.Data.SqlClient"/> </connectionStrings> <appSettings> <add key="MaxCount" value="100"/> </appSettings>
添加下面代码到你的配置文件内
Winfrom:app.config
WEB: Web.config
说明:
DefautConnectionString 数据库连接字符串 (因为此类支持多库操作 所以它是默认的链接字符串)
MaxCount 对象池最大对象数
其他配置:
关于多库配置:
<connectionStrings> <add name="DefautConnectionString" connectionString="server=192.168.134.153;Database=AutoAudit1;User Id=sa;Password=123456;connection reset=false;connection lifetime=5;min pool size=1;max pool size=20" providerName="System.Data.SqlClient"/> <add name="data1" connectionString="server=192.168.134.153;Database=AutoAudit1;User Id=sa;Password=123456;connection reset=false;connection lifetime=5;min pool size=1;max pool size=20" providerName="System.Data.SqlClient"/> <add name="data2" connectionString="server=192.168.134.153;Database=AutoAudit2;User Id=sa;Password=123456;connection reset=false;connection lifetime=5;min pool size=1;max pool size=20" providerName="System.Data.SqlClient"/> <add name="data3" connectionString="server=192.168.134.153;Database=AutoAudit3;User Id=sa;Password=123456;connection reset=false;connection lifetime=5;min pool size=1;max pool size=20" providerName="System.Data.SqlClient"/> </connectionStrings> <appSettings> <add key="MaxCount" value="100"/> </appSettings>
你可以通过这样配置 配置文件 以达到连接多个数据库
2.创建SqlExecuteXY 对象
常规创建方法:
using(SqlXY.SqlExecuteXY sqlobj = new SqlXY.SqlExecuteXY()) { //sqlobj... SQL操作 }
其他创建方法:
SqlXY.SqlExecuteXY sqlobj = new SqlXY.SqlExecuteXY()) try { //sqlobj... SQL操作 } finally { sql.Dispose(); }
注意:此SQLExecuteXY对象使用完后一定要Dispose()否者它将无法被对象池回收,后果自己设想.
2.1 多库的对象创建
如果使用不带参数的构造函数 那么创建出来的SQL 对象的连接字符串将是 DefautConnectionString 所配置的字符串,如何达到多库访问
其实很简单. 只要在构造方法里面带入 配置 连接字符串 的 name 属性就行好了
例:
SqlXY.SqlExecuteXY sqlobj = new SqlXY.SqlExecuteXY("data2")) try { //sqlobj... SQL操作 } finally { sql.Dispose(); }
或者
using(SqlXY.SqlExecuteXY sqlobj = new SqlXY.SqlExecuteXY("data2")) { //sqlobj... SQL操作 }
最常用的语句 SELECT :
1.使用SqlExecuteScalar 返回第一行第一列
数据库代码:
/****** 对象: Table [dbo].[UserInfo] 脚本日期: 12/09/2010 14:52:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[UserInfo]( [UserName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL, [PassWord] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL, [Count] [int] NOT NULL CONSTRAINT [DF_UserInfo_Count] DEFAULT ((5)), [Rex] [int] NOT NULL CONSTRAINT [DF_UserInfo_Rex] DEFAULT ((0)), [UserAllList] [text] COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_UserInfo_UserAllList] DEFAULT (''), [QQ] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL CONSTRAINT [DF_UserInfo_QQ] DEFAULT ((0)), CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED ( [UserName] ASC )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO SET ANSI_PADDING OFF insert into [UserInfo]([UserName],[PassWord],[UserAllList],[QQ]) values('123123','password1','a-b-c','123321'); insert into [UserInfo]([UserName],[PassWord],[UserAllList],[QQ]) values('123456','password2','a-b-c','123321');
C#:
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { string username= sqlobj.SqlExecuteScalar("SELECT [UserName] FROM [UserInfo] WHERE [PassWord]=@PassWord", new SqlParameter[] { new SqlParameter("@PassWord","password2") }).ToString(); }
2.返回dataset:
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { DataSet ds = sqlobj.SqlExcuteDataSet("SELECT * FROM [UserInfo] WHERE [PassWord]=@PassWord", new SqlParameter[] { new SqlParameter("@PassWord","password2") }); }
3.返回SqlDataReader
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { SqlDataReader dr = sqlobj.SqlExecuteReader("SELECT * FROM [UserInfo] WHERE [PassWord]=@PassWord", new SqlParameter[] { new SqlParameter("@PassWord","password2") }); }
SELECT 的类化表操作:
类化表,学过LINQ TO SQL 的一定不会陌生.就是将表看成一个类.把里面的一行数据 看成 一个对象.那么表数据 就是这个对象的集合
将上面的表映射成类的代码:
public class UserInfo { public string UserName { get; set; } public string PassWord { get; set; } public int Count { get; set; } public int Rex { get; set; } public string UserAllList { get; set; } public string QQ { get; set; } }
关于 列于C#类型的转换 请看考微软的 DBTYPE 类说明
1.返回所有表中的集合
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { List<UserInfo> userlist = sqlobj.SqlExcuteSelectObject<UserInfo>("SELECT * FROM UserInfo"); }
2.查找所有QQ为 123321的集合
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { List<UserInfo> userlist = sqlobj.SqlExcuteSelectObject<UserInfo>("SELECT * FROM UserInfo WHERE QQ=@QQ",new SqlParameter[] { new SqlParameter("@QQ","123321") }); }
添加 更新 删除 操作:
添加 更新 删除 通常使用 SqlExecuteNonQuery 方法
案例:
UPDATA:
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { sqlobj.SqlExecuteNonQuery("UPDATE UserInfo SET PassWord=@PassWord WHERE UserName=@UserName",new SqlParameter[] { new SqlParameter("@UserName","123456"), new SqlParameter("@PassWord","newpassword") }); }
INSERT:
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { sqlobj.SqlExecuteNonQuery("insert into [UserInfo]([UserName],[PassWord],[UserAllList],[QQ]) values(@UserName,@PassWord,@UserAllList,@QQ);", new SqlParameter[] { new SqlParameter("@UserName","123456"), new SqlParameter("@PassWord","password"), new SqlParameter("@UserAllList","c-b-a"), new SqlParameter("@QQ","332213") }); }
DELETE:
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { sqlobj.SqlExecuteNonQuery("DELETE [UserInfo] WHERE QQ=@QQ);", new SqlParameter[] { new SqlParameter("@QQ","332213") }); }
基于 类化表 的INSERT UPDATE DELETE
INSERT :
UserInfo temp1 = new UserInfo(); temp1.UserName = "abc"; temp1.PassWord = "password"; temp1.UserAllList = "a-c-b"; temp1.QQ = "887799"; using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { sqlobj.SqlExcuteUpdateOrInsertOrDeleteObject<UserInfo>("insert into [UserInfo]([UserName],[PassWord],[UserAllList],[QQ]) values(@UserName,@PassWord,@UserAllList,@QQ);",temp1); }
UPDATE:
temp1.PassWord = "ccccc"; using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { sqlobj.SqlExcuteUpdateOrInsertOrDeleteObject<UserInfo>("UPDATE UserInfo SET PassWord=@PassWord WHERE UserName=@UserName", temp1); }
DELETE:
UserInfo temp1 = new UserInfo(); temp1.UserName = "abc"; using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { sqlobj.SqlExcuteUpdateOrInsertOrDeleteObject<UserInfo>("DELETE UserInfo WHERE UserName=@UserName", temp1); }
调用存储过程:
注意:要将bolIsProcedure 设置成 TRUE
using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { System.Data.SqlClient.SqlParameter opertype = new System.Data.SqlClient.SqlParameter("@opertype", System.Data.SqlDbType.Int); opertype.Direction = System.Data.ParameterDirection.Output; opertype.Value = DBNull.Value; System.Data.SqlClient.SqlParameter score = new System.Data.SqlClient.SqlParameter("@score", System.Data.SqlDbType.Decimal); score.Direction = System.Data.ParameterDirection.Output; score.Value = DBNull.Value; System.Data.SqlClient.SqlParameter titledesc = new System.Data.SqlClient.SqlParameter("@titledesc", System.Data.SqlDbType.NVarChar, 500); titledesc.Direction = System.Data.ParameterDirection.Output; titledesc.Value = DBNull.Value; System.Data.SqlClient.SqlParameter retval = new System.Data.SqlClient.SqlParameter("@retval", System.Data.SqlDbType.Int); retval.Direction = System.Data.ParameterDirection.Output; retval.Value = DBNull.Value; sqlobj.SqlExecuteNonQuery("lp_CheckOrder_WanMei", new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@orderno",p.OrderID), opertype, score, titledesc, retval }, true); int Retavl = (int)(retval.Value); }
事务的处理:
BeginTrans() 开始一个事务
CommitTrans()提交事务
RollbackTrans()回滚事务
UserInfo temp1 = new UserInfo(); temp1.UserName = "abc"; using (SqlExecuteXY sqlobj = new SqlExecuteXY()) { sqlobj.BeginTrans(); try { sqlobj.SqlExcuteUpdateOrInsertOrDeleteObject<UserInfo>("DELETE UserInfo WHERE UserName=@UserName", temp1); sqlobj.CommitTrans(); } catch { sqlobj.RollbackTrans(); } }
大部分操作都在这里,我相信大家可以举一反三
谢谢
相关文章推荐
- ASP.NET MVC 5 学习教程:使用 SQL Server LocalDB
- ASP.NET MVC 5 学习教程:使用 SQL Server LocalDB
- ASP.NET Core 中文文档 第二章 指南(4.5)使用 SQL Server LocalDB
- ASP.NET MVC 5 学习教程:使用 SQL Server LocalDB
- [翻译]Scott Mitchell 的ASP.NET 2.0数据教程之四十九:使用SqlDataSource插入、更新以及删除数据
- 结合使用 ASP.NET 和 SQL Server Express Edition
- 未安装SQL Server Express的情况下使用Asp.Net的网站配置工具
- 如何使用 ISA Server 2004 来发布运行 Microsoft SQL Server 2000
- 数据库控件dotConnect for SQL Server使用教程:如何连接到SQL Server
- 学习ASP .NET MVC5官方教程总结(五)使用SQL Server LocalDB创建连接字符串
- Firefly官方教程之Netconnect使用文档
- IIS6(Win2003) 使用.net framework 4.0 后,默认文档失效解决方案,出现Server Unavailable
- 使用gitbook 发布一个教程文档网站
- ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
- 结合使用 ASP.NET 和 SQL Server Express Edition
- .NET文档生成工具ADB使用图文教程
- ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB
- asp.net VS2013自带的数据库SQL Server Express LocalDB使用介绍
- ASP.NET Core使用NLog记录日志到Microsoft Sql Server
- IIS安全工具UrlScan介绍 ASP.NET 两种超强SQL 注入免费解决方案( 基于IIS,使用免费工具) 批改或隐藏IIS7.5的Server头信息 移除X-Powered-By,MVC,ASP.NET_SessionId 的 HTTP头或者cookie名称