通用数据访问类库,兼容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. 开源方案搭建可离线的精美矢量切片地图服务-4.Mapbox样式设计

    项目成果展示(所有项目文件都在阿里云的共享云虚拟主机上,访问地图可以会有点慢,请多多包涵). 01:中国地图:http://test.sharegis.cn/mapbox/html/3china.ht ...

  2. (在数据库中调用webservices。)SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问

    --开启 Ole Automation Procedures sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_config ...

  3. CodeBlocks "no such file or directory" 错误解决方案(创建类找不到头文件)

    在CodeBlocks下,有时候需要自己定义类,当然就要添加相应的头文件,但添加进去的头文件明明包含在项目中了, 但编译时还是会报错:no such file or directory;这是为什么呢? ...

  4. com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value:...

    在使用mybatis的@Update注解的时候,报了一个这样的错 ### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncat ...

  5. Spring-boot简单的理解

    SpringBoot启动 SpringApplication.run(MyBootApplication.class); SpringApplication.run启动SpringBoot应用,主要过 ...

  6. 工程中添加工程依赖 Xcode iOS

    有时我们需要在一个主工程中添加其他的子工程,用来对子工程进行编写修改或者是利用子工程中的库文件等等操作,这时候我们需要用到工程的嵌套.   步骤:(看图说话)   1.新建主工程,名为TestTTTT ...

  7. java性能监控工具jstat

    jstat Monitors Java Virtual Machine (JVM) statistics. This command is experimental and unsupported. ...

  8. 撩课-Web大前端每天5道面试题-Day24

    1.下面的代码将输出什么? ; i < ; i++) { setTimeout(function() { console.log(i); }, i * ); } 闭包在这里能起什么作用? 上面的 ...

  9. properties配置文件编码问题

    properties配置文件编码问题 person.last-name=哈哈 person.age=18 person.bitrh=2019/01/12 person.boss=false perso ...

  10. ASP.NET MVC扩展库

    很多同学都读过这篇文章吧 ASP.NET MVC中你必须知道的13个扩展点,今天给大家介绍一个ASP.NET MVC的扩展库,主要就是针对这些扩展点进行.这个项目的核心是IOC容器,包括Ninject ...