ADO.NET链接数据库封装方法
/// <summary>
/// 获取一个表
/// </summary>
/// <param name="sql"></param>
/// <param name="pars"></param>
/// <returns></returns>
public DataTable GetTable(string sql, params SqlParameter[] pars)
{
// using (var con = new SqlConnection(hisConstr))
using (var con = new SqlConnection(ConnectionString))
{
try
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
var dr = cmd.ExecuteReader();
var dt = new DataTable();
dt.Load(dr);
dr.Close();
return dt;
}
catch (Exception exc)
{
throw exc;
}
finally
{
con.Close();
}
}
}
/// <summary>
/// 查询数据返回list
/// </summary>
/// <param name="sql"></param>
/// <param name="pars"></param>
/// <returns></returns>
public List<Dictionary<string, dynamic>> GetList(string sql,params SqlParameter[] pars)
{
using (var con = new SqlConnection(ConnectionString))
{
var cmd =new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
var dr = cmd.ExecuteReader();
var list = new List<Dictionary<string,dynamic>>();
while (dr.Read())
{
var newdic = new Dictionary<string,dynamic>();
foreach (var item in Enumerable.Range(0,dr.FieldCount).ToDictionary(dr.GetName,dr.GetValue))
{
newdic.Add(item.Key,item.Value==DBNull.Value?"":item.Value);
}
list.Add(newdic);
}
return list;
}
}
/// <summary>
/// 查询数据,返回单个值
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="pars">参数</param>
/// <returns></returns>
public object GetValue(string sql, params SqlParameter[] pars)
{
using (var con = new SqlConnection(ConnectionString))
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
var value = cmd.ExecuteScalar();
return value;
}
}
/// <summary>
/// 增删改数据
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="pars">参数</param>
/// <returns></returns>
public int SavaData(string sql, params SqlParameter[] pars)
{
using (var con = new SqlConnection(ConnectionString))
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = sql;
cmd.Parameters.AddRange(pars);
con.Open();
return cmd.ExecuteNonQuery();
}
}
/// <summary>
/// 执行事务的SQL语句
/// </summary>
/// <param name="childSqls">SQL语句集合</param>
/// <param name="childParametersList">参数列表集合</param>
/// <returns></returns>
public bool ChageDataWithTransaction(List<string> sqls, List<List<SqlParameter>> parametersList)
{
using (var con = new SqlConnection(ConnectionString))
{
con.Open();
var tran = con.BeginTransaction();
try
{
var cmd = new SqlCommand();
cmd.Connection = con;
cmd.Transaction = tran;
for (int i = 0; i < sqls.Count; i++)
{
cmd.Parameters.Clear();
cmd.CommandText = sqls[i];
cmd.Parameters.AddRange(parametersList[i].ToArray());
cmd.ExecuteNonQuery();
}
tran.Commit();
return true;
}
catch (Exception exc)
{
tran.Rollback();
throw exc;
}
finally
{
con.Close();
}
}
}
ADO.NET链接数据库封装方法的更多相关文章
- Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例
Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...
- ADO 动态链接数据库
ADO(ActiveX Data Objects)是基于组件的数据库编程接口,它是一个和编程语言无关的COM组件系统. 下面内容转载自:http://www.vckbase.com/document/ ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- PHP 链接多种数据库 的方法
数据库中 单词之间的空格(一个语句前面和后面做字符串拼接的时候最好留空格 ) 可以随便加 其他地方 禁止随便加空格!!(加了 就报错)! =====================总结=== ...
- 使用Spring.net中对Ado.net的抽象封装来访问数据库
使用Spring.net中对Ado.net的抽象封装来访问数据库 Spring.NET是一个应用程序框架,其目的是协助开发人员创建企业级的.NET应用程序.它提供了很多方面的功能,比如依赖注入 ...
- Python 3.4 链接mysql5.7 数据库使用方法
最近笔者在研究Python3.4链接MySQL5.7版本,笔者意图在网上找到一个比较好的链接方式,网上介绍的大致有 mysqldb或者pymssql这两种方法来链接,mysqldb下载地址http:/ ...
- 封装JDBC操作数据库的方法
自己动手封装java操作数据库的方法: 一:目录结构 二:所需依赖的第三方jar包 这里只需引入mysql-connector-java-5.1.8-bin.jar,mysql数据库驱动jar包 三: ...
- 用ADO操作数据库的方法步骤(ZT)
http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包 ...
- 摘:用ADO操作数据库的方法步骤
用ADO操作数据库的方法步骤 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口 ...
随机推荐
- mysql InnoDB index 主键采用聚簇索引,二级索引不采用聚簇索引
原文链接 我的归纳: (1)InnoDB的主键采用聚簇索引存储,使用的是B+Tree作为索引结构,但是叶子节点存储的是索引值和数据本身(注意和MyISAM的不同). (2)InnoDB的二级索引不使用 ...
- oracle 修改进程
SQL> show parameter session NAME TYPE VALUE------------------------------------ ----------- ----- ...
- Android:layout属性大全
Android layout属性大全 第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中android:layout_centerVert ...
- word转换成HTML 以及IE不兼容问题
public static bool WordToHtml(string wordFileName, string htmlFileName) { try { Object oMissing = Sy ...
- 周强201771010141《面向对象程序设计(java)》第六周学习总结
枚举是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁,安全性以及便捷性.创建枚举类型要使用enum关键字,隐含了 ...
- Object.create(null)、Object.create({})、{} 三者创建对象的区别
参考 1.先看看我们经常使用的{}创建的对象是什么样子的: var o = {a:1}; console.log(o) 从上图可以看到,新创建的对象继承了Object自身的方法,如hasOwnProp ...
- React Native 安卓 程序运行报错: React Native version mismatch(转载)
这个问题已经得到解决,参照stackoverflow上的问题:https://stackoverflow.com/que...这个问题的原因就处在Android工程中app/build.gradle中 ...
- 学习笔记TF025:自编码器
传统机器学习依赖良好的特征工程.深度学习解决有效特征难人工提取问题.无监督学习,不需要标注数据,学习数据内容组织形式,提取频繁出现特征,逐层抽象,从简单到复杂,从微观到宏观. 稀疏编码(Sparse ...
- Python服务Dokcer化并k8s部署实例
这篇文章记录了我试验将一个基于python的服务docker化并k8s部署的过程. 服务介绍Docker化设计业务代码改造创建docker镜像K8S部署设计yaml文件运行服务介绍这是一个用 pyth ...
- [C#]typeof,Gettype()和is的区别
typeof 参数是一个类型名称,比如你自己编写的一个类 GetType()是类的方法,继承自object,返回该实例的类型 is 用来检测实例的兼容性(是否可以相互转换) 例: class Anim ...