博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlHelper类
阅读量:6251 次
发布时间:2019-06-22

本文共 6928 字,大约阅读时间需要 23 分钟。

下面代码是本人封装的一个sqlHelper类。主要功能是对数据库的CURD。以及存储过程、事物、分页的实现。(首先要引入命名空间using System.Configuration;)

public class SqlHelper

{

#region 连接字符串/// /// 连接数据库的字符串/// private static string conStr = ConfigurationManager.ConnectionStrings["sqlconStr"].ConnectionString; #endregion
连接字符串

 

1 #region 01.执行查询返回datatable +DataTable ExecuteDataTable(string sql, params SqlParameter[] param) 2 ///  3 /// 返回datatable 4 ///  5 /// sql语句 6 /// 数组型参数,sql语句需要替换的参数 7 /// 
DataTable
8 public static DataTable ExecuteDataTable(string sql, params SqlParameter[] param) 9 {10 DataTable dt = new DataTable();11 using (SqlConnection con = new SqlConnection(conStr))12 {13 //con.ConnectionString = conStr; 14 using (SqlCommand com = new SqlCommand(sql, con))15 {16 //com.CommandText = sql;17 //com.Connection = con;18 //com.CommandType = CommandType.Text;19 //com.CommandTimeout = Convert.ToInt32(ConfigurationSettings.AppSettings["CommandTimeout"]); 20 com.Parameters.AddRange(param); 21 //创建适配器对象(卡车,它会自动开关连接通道)22 SqlDataAdapter adapter = new SqlDataAdapter(com);23 //adapter.SelectCommand = com;//也可以用这种方式联系command对象24 adapter.Fill(dt);25 com.Parameters.Clear();26 return dt;27 }28 }29 } 30 #endregion
执行查询返回datatable +DataTable ExecuteDataTable(string sql, params SqlParameter[] param)

 

1 #region 02.返回非查询命令ExecuteNoQuery受影响的行数 +int ExecuteNoQuery(string sql, params SqlParameter[] param) 2 ///  3 /// 返回非查询命令ExecuteNoQuery受影响的行数 4 ///  5 /// sql语句 6 /// 数组型参数,sql语句需要替换的参数 7 /// 
返回受影响的行数
8 public static int ExecuteNoQuery(string sql, params SqlParameter[] param) 9 {10 using (SqlConnection con = new SqlConnection(conStr))11 {12 using (SqlCommand com = new SqlCommand(sql, con))13 {14 com.Parameters.AddRange(param);15 con.Open();16 int count= com.ExecuteNonQuery();17 com.Parameters.Clear();18 return count;19 }20 }21 } 22 #endregion
02.返回非查询命令ExecuteNoQuery受影响的行数 +int

 

1 #region 03.执行查询或者非查询, 返回结果集的第一行第一列 +object ExecuteScalar(string sql, params SqlParameter[] param) 2 ///  3 /// 执行查询或者非查询, 返回结果集的第一行第一列 4 ///  5 /// sql语句 6 /// 数组型参数,sql语句需要替换的参数 7 /// 
返回查询结果集的第一行第一列
8 public static object ExecuteScalar(string sql, params SqlParameter[] param) 9 {10 using (SqlConnection con = new SqlConnection(conStr))11 {12 using (SqlCommand com = new SqlCommand(sql, con))13 {14 com.Parameters.AddRange(param);15 con.Open(); 16 object o= com.ExecuteScalar();17 com.Parameters.Clear();18 return o;19 20 }21 }22 } 23 #endregion
03.执行查询或者非查询, 返回结果集的第一行第一列 +object

 

1 #region 04.返回 SqlDataReader + SqlDataReader ExecuteDataReader(string sql, params SqlParameter[] param) 2 ///  3 /// 返回datareader 4 ///  5 ///  6 ///  7 /// 
8 public static SqlDataReader ExecuteDataReader(string sql, params SqlParameter[] param) 9 {10 //因为 SqlDataReader 是基于连接的,所以不能在这里用using释放掉连接,不然返回的SqlDataReader就无法从数据库服务器一条一条的读取数据了11 SqlConnection con = new SqlConnection(conStr);12 SqlCommand com = new SqlCommand(sql, con);13 if (param != null)14 {15 com.Parameters.AddRange(param);16 }17 con.Open();18 //因为当读取完数据后又需要释放连接(连接是宝贵的),所以在这里为ExecuteReader()方法加了一个枚举型参数CommandBehavior.CloseConnection,让datareader关闭时,自动的关闭connection的连接。19 SqlDataReader reader= com.ExecuteReader(CommandBehavior.CloseConnection);20 com.Parameters.Clear();21 return reader;22 } 23 #endregion
04.返回 SqlDataReader + SqlDataReader ExecuteDataReader(string sql, params SqlParameter[] param)

 

1 #region 05.存储过程 返回数据 2 ///  3 /// 返回DataTable和pageCount 4 ///  5 ///  6 ///  7 /// 
8 public static DataTable ExecuteProc(string sql, int pageSize, int pageIndex, out int pageCount) 9 {10 using (SqlConnection con = new SqlConnection(conStr))11 {12 //string sql = "usp_GetPageData";13 using (SqlCommand com = new SqlCommand(sql, con))14 {15 com.CommandType = CommandType.StoredProcedure;//设置sql语句类型为存储过程16 17 //设置存储过程的输入参数18 com.Parameters.AddWithValue("@pageSize", pageSize);19 com.Parameters.AddWithValue("@pageIndex", pageIndex);20 21 //输出参数的设置22 SqlParameter sp = com.Parameters.Add("@pageCount", SqlDbType.Int);23 sp.Direction = ParameterDirection.Output;24 25 26 DataTable dt = new DataTable();27 using (SqlDataAdapter adaper = new SqlDataAdapter(com))28 {29 adaper.Fill(dt);30 com.Parameters.Clear();31 pageCount = Convert.ToInt32(sp.Value);//获取输出参数的值32 return dt;33 }34 }35 }36 } 37 #endregion
05.存储过程 返回数据

 

1 #region 06.分页返回数据  2 ///  3 /// 分页返回数据 4 ///  5 /// 查询命令 6 /// 按降序或者升序获取数据 如:id desc 7 /// 要获取哪页的数据 8 /// 页的大小 9 /// 输出型参数:总数据行数目10 /// 输出型参数:总页数11 /// 查询命令参数12 /// 
数据行集合dtatable
13 public static DataTable ExecuteSplitQueryData(string sql, string orderByKey, int pageIndex, int pageSize, out long totalRows, out long PageCount, params SqlParameter[] param)14 {15 16 string str = string.Format("select row_number()over(order by {0}) as rownumber,* from ({1}) as t", orderByKey, sql);17 return ExecuteSplitQuery(str, orderByKey, pageIndex, pageSize, out totalRows, out PageCount, param);18 19 }20 private static DataTable ExecuteSplitQuery(string sql, string orderByKey, int pageIndex, int pageSize, out long totalRows, out long PageCount, params SqlParameter[] param)21 {22 //获取总行数23 object count = ExecuteScalar(string.Format("select count(1) from ({0})t", sql), param);24 totalRows = Convert.ToInt32(count);25 26 //获取总页数27 long pagecount = totalRows / pageSize;28 long laterNum = totalRows % pageSize;29 if (laterNum>0)30 {31 pagecount++;32 }33 PageCount = pagecount;34 35 //获取分页后的数据36 string str = string.Format("select * from ({0})t ", sql);37 str += string.Format("where t.rownumber between {0} and {1} order by {2}", pageIndex * pageSize - pageSize + 1, pageIndex * pageSize, orderByKey); 38 return ExecuteDataTable(str, param);39 } 40 #endregion
06.分页返回数据

 

public static int ExecuteTransaction(IDictionary
dics){ int n = 0;SqlConnection con = new SqlConnection();con.ConnectionString = conStr;SqlCommand cmd = new SqlCommand();cmd.Connection = con;con.Open();SqlTransaction myTransaction = con.BeginTransaction();cmd.Transaction = myTransaction;try{foreach (var dic in dics){cmd.CommandText = dic.Key;cmd.Parameters.Clear();if (dic.Value != null){cmd.Parameters.AddRange(dic.Value);}n += cmd.ExecuteNonQuery(); //循环执行命令}myTransaction.Commit(); //提交数据库事务return n;}catch (System.Exception ex){myTransaction.Rollback();throw ex;}finally{con.Close();}}
07.执行事务public static int ExecuteTransaction(IDictionary<string, SqlParameter[]> dics)

 

public static int ExecuteUpdate(DataSet ds, params SqlParameter[] param){using (SqlConnection con=new SqlConnection()){con.ConnectionString = conStr;con.Open(); using (SqlCommand com=new SqlCommand()){com.Connection = con;com.Parameters.AddRange(param);SqlDataAdapter adapter = new SqlDataAdapter();adapter.SelectCommand = com;SqlCommandBuilder builder = new SqlCommandBuilder();builder.DataAdapter = adapter;return adapter.Update(ds);}}}
08.public static int ExecuteUpdate(DataSet ds, params SqlParameter[] param)

 

}

转载于:https://www.cnblogs.com/eggTwo/p/3442870.html

你可能感兴趣的文章
信息检索Reading List
查看>>
JavaWeb_JavaEE_命名规则
查看>>
申小雨命案审理延期至3月5日 警方将翻译嫌犯口供
查看>>
自动精简配置&重复数据删除核心技术点及其经济效应探究
查看>>
cncert网络安全周报35期 境内被植入后门的政府网站112个 环比上涨24.4%
查看>>
南澳州政府拒绝更换DOS病历软件:称为患者安全着想
查看>>
物联网到底是不是泡沫,且看英特尔交出的答案
查看>>
山东大学宋锐:从波士顿动力到“中国大狗”,四足仿生机器人研究与思考(PPT)...
查看>>
扎克伯格要哭,数据显示几乎所有的假新闻网站都靠 Facebook 获取流量
查看>>
大数据和云计算是何关系?
查看>>
黑客使用含病毒的邮件 半年内盗取近20亿卢布
查看>>
Silverlight+WCF 新手实例 象棋 该谁下棋-B下A停(三十)
查看>>
2017到2021全球通信提供商CAPEX超2.1万亿美元
查看>>
CYQ.Data 轻量数据层之路 使用篇-辅助工具枚举生成器 视频 C (二十)
查看>>
苹果携手 SAP 开发的 iOS 云平台 SDK 正式上线
查看>>
EMC联邦公布最新超融合型设备
查看>>
IPv6太落后了:中国加速服务器援建
查看>>
《Web测试囧事》——1.2 索引值计算错误使资源缩略图显示和大图展现不一致...
查看>>
智能社会到来?微软建设实时工作环境搜索引擎
查看>>
Java中关键字volatile的作用
查看>>