通用数据访问类库,兼容ADO、ADO.NET方式访问。

利用ProviderFactory工厂方法,支持Oracle(不需要安装客户端)、SQL Server、OleDb和ODBC等数据库访问。

https://github.com/BobinYang/YBB.DBUtils

用法:

1、初始化线程缓存AdoNetHelper 类:

  • Oracle:
using (AdoNetHelper Db = AdoNetHelper.ThreadInstance("data source=:1521/orcl;user id=;password=*;", DbProviderType.Oracle_ManagedODP))) { 。。。。。 }
  • SQL Server:
using (AdoNetHelper Db = AdoNetHelper.ThreadInstance("data source=;user id=sa;password=;Initial Catalog=*;", DbProviderType.SqlServer))) { 。。。。。 }//Dispose可关闭所有内部连接。

2、常用的命令:

  • Db.OpenNewConnection()
  • Db.CreateNewCommand(sql, conn)
  • Db.BeginNewTrans(conn)
  • Db.CreateNewCommand(sql, trans);
  • Db.MakeInParam(":a", **)
  • DataSet ds = Db.ExecuteDataset(conn, "GetOrders", 24, 36);

以及所有DbHelper中的方法。

3、打开连接和创建命令,执行读数据

举例:

string  sql = "select 1 from  **";
DbConnection conn = null;
try
{
conn = Db.OpenNewConnection();
DbCommand command = Db.CreateNewCommand(sql, conn);
DbDataReader dr = command.ExecuteReader(); // Convert.ToInt32(command.ExecuteScalar()); // DataTable dt1 = Db.ExecuteDataset(command);
if (rd.HasRows)
{
dr.Close();
return true;
}
// while (dr.Read())
//{
// List1.Add(dr[0].ToString().Trim());
// }
dr.Close();
}
finally
{
Db.CloseConnection(conn);
}

4、带参数执行命令

举例:

        sql = "insert into table1 (column1,column2) values (:a,:b)";//sql server为@符号
DbConnection conn = Db.Conn;
using (DbCommand command = Db.CreateNewCommand(sql, conn))
{
command.Parameters.Add(Db.MakeInParam(":a", **));
command.Parameters.Add(Db.MakeInParam(":b", **));
command.ExecuteNonQuery();
}

5、利用事务处理更新操作。

        int rows = ;
DbConnection conn = Db.OpenNewConnection();
DbTransaction trans = Db.BeginNewTrans(conn);
DbCommand command = Db.CreateNewCommand(sql, trans);
try
{
sql = "delete **";
command.CommandText = sql;
rows = command.ExecuteNonQuery(); sql = "update **";
command.CommandText = sql;
rows = command.ExecuteNonQuery(); trans.Commit();
}
catch (Exception)
{
if (trans != null)
{
trans.Rollback();
}
throw;
}
return rows;

6、插入操作返回最新值。

        string lastId = "";
DbTransaction trans = null;
try
{
DbConnection conn = Db.Conn;
trans = Db.BeginNewTrans(conn); sql = "insert intotable1 (column1,column2) values (*,*) RETURNING ID into :recid "; command = Db.CreateNewCommand(sql, trans);
DbParameter paralastId = Db.MakeOutParam(":recid", DbType.String, );
paralastId.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(paralastId); command.ExecuteNonQuery();
command.Parameters.Clear();
lastId = paralastId.Value.ToString(); trans.Commit();
}
catch (Exception)
{
if (trans != null)
{
trans.Rollback();
}
throw;
}
//SQL的存储过程

ALTER PROCEDURE [dbo].[MouldFiles_Exists]
@ID int
AS
DECLARE @TempID int
SELECT @TempID = count(1) FROM [MouldFiles] WHERE ID=@ID
IF @TempID = 0
RETURN 0
ELSE
RETURN 1


7、处理存储过程的输入输出参数。

        string sql = "sp***";
DbConnection conn = Db.Conn;
command = Db.CreateNewCommand(sql, conn);
command.CommandType = CommandType.StoredProcedure; //钻取存储过程参数
DbParameter[] spParameterSet = Db.GetSpParameterSet(sql); //参数加入到command中
foreach (DbParameter parameter in spParameterSet)
{
command.Parameters.Add(parameter);
} //为参数赋值
command.Parameters[":line"].Value = Line;
command.Parameters[":model"].Value = PartNumber; command.ExecuteNonQuery();
//得到输出参数的值(@ID int output,)
ID = Convert.ToInt32(((OracleDecimal)(command.Parameters[":ID"].Value)).Value);
command.Parameters.Clear();
command.CommandType = CommandType.Text;

8、类图如下:

YBB.DBUtils用法的更多相关文章

  1. 第14天dbutils与案例

    第14天dbutils与案例 第14天dbutils与案例    1 1.    1.dbutils介绍    2 2.    2.dbutils快速入门    2 3.    3.dbutils A ...

  2. xUtils介绍 -- DbUtils、ViewUtils、HttpUtils、BitmapUtils

    转载注明出处:https://github.com/wyouflf/xUtils xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的ht ...

  3. Android 最热的高速发展框架XUtils

    近期搜了一些框架供刚開始学习的人学习,比較了一下XUtils是眼下git上比較活跃 功能比較完好的一个框架,是基于afinal开发的,比afinal稳定性提高了不少.以下是介绍: 鉴于大家的热情,我又 ...

  4. Android框架之高速开发框架xUtil

    做Android开发我们通常是从原生态的開始,就是调用默认那些Android代码来开发我们的应用,可是到了一定程度,我们就想着怎么来高速开发我们的应用.这个时候我们就要着手来研究框架了. 以下介绍一个 ...

  5. android高速开发框架xUtils

    xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词).拥有更加灵活的ORM,很多其它的事件注解支持且不受 ...

  6. Android 最火的高速开发框架xUtils

    Github下载地址:https://github.com/wyouflf/xUtils xUtils简单介绍 xUtils 包括了非常多有用的Android工具. xUtils 最初源于Afinal ...

  7. 强大的xUtils工具类整理

    xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,很多其它的事件注解支持且不受 ...

  8. 为什么要使用数据库连接池?以及用法(DBUtils)

    看代码, from flask import Flask from db import POOL import pymysql app = Flask(__name__) app.secret_key ...

  9. xUtils中用DbUtils,ViewUtils的用法

    一.有关xUtils的简介 xUtils 包含了很多实用的android工具.xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10 ...

随机推荐

  1. java 使用 pdf.js 在线查看 pdf 文档

    1. 下载对应的 pdf.js 文件: 推荐地址:             https://github.com/mozilla/pdf.js/            http://mozilla.g ...

  2. Linux man C++ 库函数

    默认情况下,linux是的man是不能查阅C++的标准库函数的,这个很不方便,那有没有办法可以直接man C++标准库函数呢? 当然有,不过要自己动手,自己动手,才能丰衣足食! 1. 下载安装manp ...

  3. 关于Mysql+EF6本地运行和发布没有问题,发布到服务器上出现问题的解决方案

    这个问题折磨了我差不多两天,网上各种方法也找了个遍,但是都没有解决我的问题,后面通过自己仔细分析问题和排查,终于把问题解决了,以下是我的解决问题的步骤,希望能帮到各位,不要再被这些问题坑了 1,项目实 ...

  4. SpringBoot集成Jersey

    SpringBoot集成Jersey 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> & ...

  5. (文章也有问题,请自行跳过)react中的状态机每次setState都是重新创建新的对象,如需取值,应该在render中处理。

    demo如下 class Demo4StateLearn extends React.Component { constructor(props) { super(props); this.state ...

  6. opencv3.2.0实现连续图片合成avi视频

    ##名称:利用videowriter实现多张连续图片合成avi视频 ##平台:QT5.7.1+OpenCV3.2.0 ##日期:2017年12月10日 /**************新建QT控制台程序 ...

  7. c# 后台异步请求接口

    第一步:引用程序集:Systen.Net.Http 第一种方式: 异步 Get请求 HttpClient client = new HttpClient();            //client. ...

  8. Spring框架学习之概述

    一.什么是软件框架 打个比方就像建筑的混凝土框架,搭好了架子,工人只需要把墙填上. .特点: -半成品 -封装了特定的处理流程和控制逻辑 -成熟的,不断升级改造的软件 .框架和类库的区别 -框架一般是 ...

  9. javascript的继承实现

    javascript虽然是一门面向对象的语言,但是它的继承机制从一开始设计的时候就不同于传统的其他面向对象语言,是基于原型的继承机制,但是在这种机制下,继承依然有一些不同的实现方式. 方法一:类式继承 ...

  10. 分布式部署下的报表调用 API调用 权限问题以及性能方案

     背景描述: 客户的实际情况是需要在具体系统构架前,通过与厂商讨论确定最终的系统架构方案. 需求是客户自己有管理系统,希望建立一个独立的报表服务器,该报表服务器可以对多个管理系统提供报表服务,不知 ...