C#,一份超简单的数据库帮助类,SqlHelp
简单,实用,留存。
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace CarHailing.Base
{
/// <summary>
/// 数据库帮助类
/// </summary>
public class SqlHelp
{
/// <summary>
/// 创建一个已打开的连接
/// </summary>
/// <returns></returns>
private static SqlConnection CreateConn()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
conn.Open();
return conn;
} /// <summary>
/// 执行sql语句,返回受影响的行数
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql)
{
return ExecuteNonQuery(sql, null);
} /// <summary>
/// 执行sql语句,返回受影响的行数
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, SqlParameter[] ps)
{
SqlConnection conn = CreateConn();
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
return ;
}
finally
{
conn.Close();
}
} /// <summary>
/// 执行sql语句,返回一个结果表
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataTable ExecuteSelectDataTable(string sql)
{
return ExecuteSelectDataTable(sql, null);
} /// <summary>
/// 执行sql语句,返回一个结果表
/// </summary>
/// <param name="sql"></param>
/// <param name="ps"></param>
/// <returns></returns>
public static DataTable ExecuteSelectDataTable(string sql, SqlParameter[] ps = null)
{ SqlConnection conn = CreateConn();
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
if (ps != null)
{
cmd.Parameters.AddRange(ps);
}
//SqlDataAdapter sda = new SqlDataAdapter(cmd);
SqlDataReader read = cmd.ExecuteReader();
DataTable table = new DataTable();
table.Load(read);
//DataSet ds = new DataSet();
//sda.Fill(ds);
return table;
}
finally
{
conn.Close();
}
} /// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>decimal
public static DataTable ExecuteSelectPageDataTable(string sql, ref SqlParameter[] ps)
{
SqlConnection conn = CreateConn();
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = CommandType.StoredProcedure;
try
{
cmd.Parameters.AddRange(ps);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sda.Fill(ds);
return ds.Tables[];
}
catch (SqlException ex)
{
throw ex;
}
finally
{
conn.Close();
}
} //public static SqlDataReader ExecuteReader(string cmdText, CommandType cmdType, params SqlParameter[] cmdParms)
//{
// SqlCommand cmd = new SqlCommand();
// SqlConnection conn = CreateConn(); // try
// {
// ProCommand(cmd, conn, cmdText, cmdType, cmdParms);
// SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
// //cmd.Parameters.Clear();//放到这里,返回参数会被清空。
// return rdr;
// }
// catch
// {
// conn.Close();
// throw;
// }
//} /// <summary>
/// 分页读取数据
/// </summary>
/// <param name="query">select查询语句</param>
/// <param name="pageSize">每页显示数据数</param>
/// <param name="PageIndex">当前页码</param>
/// <param name="dt">存储数据的DataTable实例</param>
public static void PageDataTable(string query, int pageSize, int PageIndex, DataTable dt)
{
//读取数据的开始索引
long startIndex = (PageIndex - ) * pageSize;
//读取数据的结束索引
long endIndex = PageIndex * pageSize - ;
//DataReader读取的当前数据行的索引
long readToIndex = -;
using (SqlConnection conn = CreateConn())
{
SqlCommand cmd = new SqlCommand(query, conn);
//conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
//数据源中的列数
int cols = dr.VisibleFieldCount;
//构造DataTable结构
for (int i = ; i < cols; i++)
{
dt.Columns.Add(new DataColumn(dr.GetName(i), dr.GetFieldType(i)));
}
//读取数据,将数据一行一行添加到DataTable
while (dr.Read())
{
readToIndex++;
//当DataReader指针在开始索引和结束索引闭区间时才读取数据构造DataRow
//并添加到DataTable
if (readToIndex >= startIndex && readToIndex <= endIndex)
{
DataRow row = dt.NewRow();
for (int i = ; i < cols; i++)
{
row[i] = dr[i];
}
dt.Rows.Add(row);
}
}
dr.Close();
}
}
}
}
C#,一份超简单的数据库帮助类,SqlHelp的更多相关文章
- 通过一个简单的数据库操作类了解PHP链式操作的实现
class Model{ public $table; //操作的表; private $opt; //查询的参数; private $pri; //表的主键; private $lastSql; / ...
- 超简单的php缓存类
<?php class Cache { private $dir = "data/cache/";//定义缓存目录 private $key='c_a_sss'; // 文件 ...
- 开发C# .net时使用的数据库操作类SqlHelp.cs
练习开发WPF程序的时候,是这样写的,虽然很简单,相必很多新手会用到,所以拿来共享一下, using System; using System.Collections.Generic; using S ...
- 简单的php Mysql类(查询 删除 更新)
php Mysql类一般都包括了几乎我们常用的数据库操作方法,这里只提供了查询 删除 更新三种操作,算不是很全只是一个简单的数据库查询类了. 代码如下 复制代码 class mysql { ...
- 超简单使用批处理(batch)操作数据库
超简单使用批处理(batch)操作数据库 批处理(batch)是什么 批处理的执行就好比快递员的工作: 未使用批处理的时候,快递员一次从分发点将一件快递发给客户: 使用批处理,则是快递员将所有要派送的 ...
- 超简单的CDH6部署和体验(单机版)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- mysql主从复制(超简单)
mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后台启动mysql ...
- ssh框架整合---- spring 4.0 + struts 2.3.16 + maven ss整合超简单实例
一 . 需求 学了这么久的ssh,一直都是别人整合好的框架去写代码,自己实际动手时才发现框架配置真是很坑爹,一不小心就踏错,真是纸上得来终觉浅! 本文将记录整合struts + spring的过程 , ...
- 这些优化 Drupal 网站速度的超简单办法,你忽略了多少?
“怎么样能让我的 Drupal 网站更快一些?”是我们最常遇到的一个问题.站点速度确实非常重要,因为它会影响你的 SEO排名效果.访客是否停留以及你自己管理网站所需要的时间. 今天我们就来看看那些通过 ...
随机推荐
- Caused by: java.lang.ClassNotFoundException: org.springframework.expression.ExpressionParser
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- 表格布局----基于bootstrap样式 布局
在实际开发中,我们通过菜鸟教程复制的表格往往不能满足我们的开发需求,样式很难看,而且不能自适应,尤其是需要到处Excel的样式,感觉非常糟糕,这次我就写了一个表单,不足之处,希望大神们多多指教: 代码 ...
- UniCode 下 CString 转 char* 的方法(转)
转自:http://blog.csdn.net/neverup_/article/details/5664733 今天进行文件操作时,将CString的GetBuffer()后直接倒到char数组后写 ...
- 过滤器(Filter)和拦截器(Interceptor)
之前总是弄混这两者,今天看了几篇文章,小结一下在这里. Filter介绍 Filter可以认为是Servlet的一种"加强版",它主要用于对用户请求进行预处理,也可以对HttpSe ...
- C#异常处理--C#基础
try...catch:捕获异常try...finally:清除异常try..catch...finily:处理所有异常 1.捕获异常 using System; using System.Colle ...
- WC2001 高性能计算机
cogs网址 这道题DP 设g[0/1][i][a][b]表示第i个机子做了a个A,b个B,0/1表示当前为A/B的最小代价 N^4转移 设f[i][a][b]表示前i个机子做了a个A,b个B的最小答 ...
- [BZOJ1087] [SCOI2005] 互不侵犯King (状压dp)
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行,包 ...
- 论文笔记(6):Weakly-and Semi-Supervised Learning of a Deep Convolutional Network for Semantic Image Segmentation
这篇文章的主要贡献点在于: 1.实验证明仅仅利用图像整体的弱标签很难训练出很好的分割模型: 2.可以利用bounding box来进行训练,并且得到了较好的结果,这样可以代替用pixel-level训 ...
- Android KeyCode 列表
基本按键 KEYCODE_0 按键'0' 7 KEYCODE_1 按键'1' 8 KEYCODE_2 按键'2' 9 KEYCODE_3 按键'3' 10 KEYCODE_4 按键'4' 11 KEY ...
- 人生苦短,我用python(目录)
基础 简介 数据类型 文件操作 迭代器和生成器 函数 内置函数 面向对象编程 异常处理 socket网络编程 线程 进程/协程/异步I/O 数据库 Mysql(一) Mysql(二) Mysql(三) ...