SQLHelper 简介
什么是SQLHelper
SqlHelper是一个基于.NETFramework的数据库操作组件。组件中包含数据库操作方法,目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver、oracle、access、Mysql数据库,也是一个开源项目,提供免费下载。
SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。
编辑本段SqlHelper配置项
[1]在应用SqlHelper前最好使用web.config配置连接字符串,这样有利于网站的可移植性和代码的简洁。
<connectionStrings>
<!--SqlServerHelper连接字符串设定-->
<addconnectionString="server=.;uid=sa;pwd=123456;database=yourdatabase"name="SqlServerHelper"/>
编辑本段SqlHelper调用源码
编写SqlHelper调用代码:
SqlHelper支持多种数据库包括MySql、SqlServer、Oracle、Access数据库,如果的数据库是SqlServer,那么你可以使用SqlServerHelper类,如果是MySql,可以使用MySqlHelper,如果是Access,可以使用AccessHelper。如果是Oracle则可以使用OracleHelper类。
SqlHelper的书写风格很多,你可以选择自己的需求和爱好使用静态方式或对象方式。各和利弊。选择情况使用吧!
第一种,静态方 式,静态方式也是目前应用最多的一种,因为其简单,所以在写一个Sql语句时,用一个方法就可以搞定。如果一个过程需要多个Sql语句执行时,得创建 SqlConnection和控制他的传参,使语句复杂。或者就是每执行一个sql语句让SqlConnection创建一次,使性能受到影响。但是在只 执行一个简单的查询语句时,显的更简单,所以这种方式在简单的执行逻辑面前,受到大家的喜爱!
//查询语句执行:
DataTabledt=SqlServerHelper.ReadTable("select * from table1");
//插入语句执行:
SqlServerHelper.ExecuteNonQuery("insertinto [students] values(@student_name,@class)",
SqlServerHelper.CreateInputParameter("@student_name",SqlDbType.NVarChar, 100, txt_student_name_sqlserver.Text),
SqlServerHelper.CreateInputParameter("@class",SqlDbType.NVarChar, 100, txt_class_sqlserver.Text)
);
简单吧,这让项止显的代码又简单,又清晰!
第二种:面向对象式编程,其实这种语法也不复杂,只是加个using语句而己:
using (SqlServerHelper helper = newSqlServerHelper())
{
helper.Command.CommandText = "deletefrom [Students] where stid=@stid";
helper.AddParameter("@stid",SqlDbType. Int, student_id);
helper.Open();
helper.ExecuteNoneQuery();
helper.Command.Parameters.Clear();
helper.Command.CommandText = "select *from [Students]";return helper.ReadTable();
}
主要成员
在 SqlHelper类中实现的方法包括:
ExecuteNonQuery。此方法用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。
ExecuteReader。此方法用于返回SqlDataReader对象,该对象包含由某一命令返回的结果集。
ExecuteDataset。此方法返回DataSet对象,该对象包含由某一命令返回的结果集。
ExecuteScalar。此方法返回一个值。该值始终是该命令返回的第一行的第一列。
ExecuteXmlReader。此方法返回 FORXML查询的 XML片段。
除了这些公共方法外,SqlHelper类还包含一些专用函数,用于管理参数和准备要执行的命令。不管客户端调用什么样的方法实现,所有命令都通过 SqlCommand 对象来执行。在 SqlCommand对象能够被执行之前,所有参数都必须添加到 Parameters集合中,并且必须正确设置 Connection、CommandType、CommandText和 Transaction属性。SqlHelper类中的专用函数主要用于提供一种一致的方式,以便向 SQL Server数据库发出命令,而不考虑客户端应用程序调用的重载方法实现。SqlHelper 类中的专用实用程序函数包括:
AttachParameters:该函数用于将所有必要的SqlParameter对象连接到正在运行的 SqlCommand。
AssignParameterValues:该函数用于为SqlParameter对象赋值。
PrepareCommand:该函数用于对命令的属性(如连接、事务环境等)进行初始化。
ExecuteReader:此专用ExecuteReader实现用于通过适当的 CommandBehavior打开SqlDataReader对象,以便最有效地管理与阅读器关联的连接的有效期。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data.SqlClient;
- using System.Data;
- using System.Configuration;
- namespace DAL
- {
- public class SQLHelp
- {
- //SqlConnection对象用于建立连接
- SqlConnection mycon = new SqlConnection();
- //SqlCommand对象用于建立命令
- SqlCommand mycom = new SqlCommand();
- //用于保存连接字符串
- string strConnection = null;
- //构造函数,初始化连接
- public SQLHelp()
- {
- strConnection = ConfigurationManager.ConnectionStrings["SqlConnection_Chat"].ConnectionString;
- mycon.ConnectionString = strConnection;
- //mycon.ConnectionString = "Data Source=.;Initial Catalog=Chat;Integrated Security=True";
- }
- /// <summary>
- /// 执行SQL语句或存储过程,返回数据集
- /// </summary>
- /// <param name="commandText">SQL语句或存储过程名</param>
- /// <param name="para">参数数组</param>
- /// <param name="type">执行类型</param>
- /// <returns></returns>
- public DataSet doExceutForDataset(string commandText, SqlParameter[] para, CommandType type)
- {
- //定义DataSet存储返回数据集
- DataSet ds = new DataSet();
- //定义command命令
- mycom.CommandText = commandText;
- //判断是否有参数,有则循环赋值
- if (para != null)
- {
- for (int i = 0; i < para.Length; i++)
- {
- mycom.Parameters.Add(para[i]);
- }
- }
- //确定执行类型(SQL语句还是存储过程)
- mycom.CommandType = type;
- try
- {
- //打开连接
- mycon.Open();
- //为command命令指定连接
- mycom.Connection = mycon;
- //执行command命令
- SqlDataAdapter da = new SqlDataAdapter(mycom);
- //填充数据集
- da.Fill(ds, "table1");
- }
- catch (Exception e)
- {
- throw new Exception(e.Message, e);
- }
- finally
- {
- //关闭连接
- mycon.Close();
- }
- return ds;
- }
- /// <summary>
- /// 执行SQL语句或存储过程,返回受影响的行数
- /// </summary>
- /// <param name="commandText">SQL语句或存储过程名</param>
- /// <param name="para">参数数组</param>
- /// <param name="type">执行类型</param>
- /// <returns></returns>
- public int doExceutForRowCount(string commandText, SqlParameter[] para, CommandType type)
- {
- //定义result用于存储返回值
- int result = -1;
- //定义command命令
- mycom.CommandText = commandText;
- //判断是否有参数,有则循环赋值
- if (para != null)
- {
- for (int i = 0; i < para.Length; i++)
- {
- mycom.Parameters.Add(para[i]);
- }
- }
- //确定执行类型(SQL语句还是存储过程)
- mycom.CommandType = type;
- try
- {
- //打开连接
- mycon.Open();
- //为command命令指定连接
- mycom.Connection = mycon;
- //执行命令,返回受影响的行数
- result = mycom.ExecuteNonQuery();
- }
- catch (Exception e)
- {
- throw new Exception(e.Message, e);
- }
- finally
- {
- //关闭连接
- mycon.Close();
- }
- return result;
- }
- /// <summary>
- /// 用户登录验证 成功返回true
- /// </summary>
- /// <param name="strUserName">用户名</param>
- /// <param name="strPwd">密码</param>
- /// <returns></returns>
- public bool checkLogin(string strUserName, string strPwd)
- {
- bool flag = false;
- int count = -1;
- string strSql = "SELECT COUNT(*) FROM UserInfo WHERE UserName= '" + strUserName + "'and Pwd='" + strPwd + "'";
- //Command命令
- mycom = new SqlCommand();
- mycom.Connection = mycon;
- mycom.CommandText = strSql;
- //执行Command命令
- try
- {
- mycon.Open();
- count = Convert.ToInt32(mycom.ExecuteScalar());
- if (count == 0)
- {
- flag = false;
- }
- else
- if (count > 0)
- {
- flag = true;
- }
- }
- catch (SqlException ex)
- {
- throw new Exception(ex.Message, ex);
- }
- finally
- {
- mycon.Close();
- }
- return flag;
- }
- /// <summary>
- /// 执行一条SQL语句,返回第一行第一列的元素
- /// </summary>
- /// <param name="strSql">SQL语句</param>
- /// <returns></returns>
- public string doSqlForFirst(string strSql)
- {
- string result = null;//记录返回元素
- mycom = new SqlCommand();
- mycom.Connection = mycon;
- mycom.CommandText = strSql;
- try
- {
- mycon.Open();
- result = mycom.ExecuteScalar().ToString();
- }
- catch (SqlException ex)
- {
- throw new Exception(ex.Message, ex);
- }
- finally
- {
- mycon.Close();
- }
- return result;
- }
- /// <summary>
- /// 执行一条SQL语句,返回受影响的行数
- /// </summary>
- /// <param name="strSql">SQL语句</param>
- /// <returns></returns>
- public int doSql(string strSql)
- {
- int result = -1;//记录受影响的行数
- //Command命令
- mycom = new SqlCommand();
- mycom.Connection = mycon;
- mycom.CommandText = strSql;
- //执行Command命令
- try
- {
- mycon.Open();
- result = Convert.ToInt32(mycom.ExecuteNonQuery());
- }
- catch (SqlException ex)
- {
- throw new Exception(ex.Message, ex);
- }
- finally
- {
- mycon.Close();
- }
- return result;
- }
- 执行带参数的sql语句(select语句),返回数据流
- }
- }
SQLHelper 简介的更多相关文章
- EasyFastCMS系列教学课程——2、底层代码 ModelHelper与SQLHelper简介
从本节课开始,我们开始逐步正式进入实际的编码过程中.本节课的核心内容为SQLHeelper和ModelHelper两个核心类库的介绍. SQLHelper这个类相信大家都很熟悉了,他是微软petsho ...
- 关于SqlHelper的详解
SqlHelper是一个基于.NET Framework的数据库操作组件.组件中包含数据库操作方法.SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlComma ...
- 自制简单的.Net ORM框架 (一) 简介
在自己研究ORM之前,也使用过几个成熟的ORM方案,例如:EntityFramework,PetaPoco,Dapper 等,用是很好用,但是对自己来说总是不那么方便,EF比较笨重,Dapper要自定 ...
- jQuery编程基础精华01(jQuery简介,顶级对象$,jQuery对象、Dom对象,链式编程,选择器)
jQuery简介 什么是jQuery? jQuery就是一个JavaScript函数库,没什么特别的.(开源)联想SQLHelper类 jQuery能做什么?jQuery是做什么的? jQuery本身 ...
- ASP.NET Core 1.1 简介
ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...
- MVVM模式和在WPF中的实现(一)MVVM模式简介
MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...
- Cassandra简介
在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...
- REST简介
一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...
- Microservice架构模式简介
在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...
随机推荐
- 利用FFmpeg生成视频缩略图 2.3.1
1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...
- -fomit-frame-pointer 编译选项在gcc 4.8.2版本中的汇编代码研究
#include void fun(void) { printf("fun"); } int main(int argc, char *argv[]){ fun(); return ...
- 3.python基础补充(集合,collection系列,深浅拷贝)
一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复 ...
- ubuntu下Tomcat7的安装和配置
和前几个软件一样,Tomcat 同样是由JAVA开发的,所以,在安装前一定要装好JDK. 大家可以到 http://tomcat.apache.org/download-70.cgi 下载最新的Tom ...
- Python Elasticsearch api
描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下面介绍了利用Python API接口进行数据查询,方便 ...
- MFC LIST 获取行数和列数
DWORD dwStyle = dataListControl.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与 ...
- Linux命令--文件权限和磁盘管理
1.chmod chmod [ugoa][+-=][rwx] file 改变目录或者文件的权限. u是user,g是group,o是other,a是all. +是添加权限,-是去掉权限,=改变权限为. ...
- 基于Twemproxy的Redis集群方案
概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的缓存性能及扩展型,我们将需要搭建redis集群来满足需 ...
- 创建型模式之Strategy模式
应用场景 实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如编写排序算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的 ...
- 神经网络:多层网络与C++实现
相关源码可参考最新的实现:https://github.com/ronnyyoung/EasyML ,中的neural_network模块,后持续更新,包括加入CNN的结构. 一.引言 在前一篇关于神 ...