YBB.DBUtils用法
通用数据访问类库,兼容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用法的更多相关文章
- 第14天dbutils与案例
第14天dbutils与案例 第14天dbutils与案例 1 1. 1.dbutils介绍 2 2. 2.dbutils快速入门 2 3. 3.dbutils A ...
- xUtils介绍 -- DbUtils、ViewUtils、HttpUtils、BitmapUtils
转载注明出处:https://github.com/wyouflf/xUtils xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的ht ...
- Android 最热的高速发展框架XUtils
近期搜了一些框架供刚開始学习的人学习,比較了一下XUtils是眼下git上比較活跃 功能比較完好的一个框架,是基于afinal开发的,比afinal稳定性提高了不少.以下是介绍: 鉴于大家的热情,我又 ...
- Android框架之高速开发框架xUtil
做Android开发我们通常是从原生态的開始,就是调用默认那些Android代码来开发我们的应用,可是到了一定程度,我们就想着怎么来高速开发我们的应用.这个时候我们就要着手来研究框架了. 以下介绍一个 ...
- android高速开发框架xUtils
xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词).拥有更加灵活的ORM,很多其它的事件注解支持且不受 ...
- Android 最火的高速开发框架xUtils
Github下载地址:https://github.com/wyouflf/xUtils xUtils简单介绍 xUtils 包括了非常多有用的Android工具. xUtils 最初源于Afinal ...
- 强大的xUtils工具类整理
xUtils简单介绍 xUtils 包括了非常多有用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,很多其它的事件注解支持且不受 ...
- 为什么要使用数据库连接池?以及用法(DBUtils)
看代码, from flask import Flask from db import POOL import pymysql app = Flask(__name__) app.secret_key ...
- xUtils中用DbUtils,ViewUtils的用法
一.有关xUtils的简介 xUtils 包含了很多实用的android工具.xUtils 最初源于Afinal框架,进行了大量重构,使得xUtils支持大文件上传,更全面的http请求协议支持(10 ...
随机推荐
- JavaScript深浅拷贝
深浅拷贝 基本类型和引用类型 ECMAScript 中的变量类型分为两类: 基本类型:undefined,null,布尔值(Boolean),字符串(String),数值(Number) 引用类型: ...
- Linux下常用的3种软件安装方式
一:Linux源码安装 1.解压源码包文件 源码包通常会使用tar工具归档然后使用gunzip或bzip2进行压缩,后缀格式会分别为.tar.gz与.tar.bz2,分别的解压方式: ...
- Walkway.js – 创建简约的 SVG 线条动画
Walkway.js 是一个使用线条和路径元素组成 SVG 动画图像的简单方法.只需根据提供的配置对象创建一个新的 Walkway 实例就可以了.这种效果特别适合那些崇尚简约设计风格的网页.目前, W ...
- [日常] json_encode对中文和引号的处理差异研究
json_encode()1.默认就是把所有 ASCII 可显示字符以外的统统转义为 Unicode如果把那些字符转义为 Unicode 之后,无论文件编码是否一致,都不会出现乱码,因此中文转成Uni ...
- 【基于初学者的SSH】struts2 值栈的详解与struts2标签库+ognl表达式
一:什么是值栈:struts2里面本身提供的一种存储机制,类似于域对象,值栈,可以存值和取值 特点:先进后出,最上面的元素叫做栈顶,也叫压栈. <s:debug></s:debug& ...
- 一些不错的Android开源音视频播放器
摘要:来自Github上的一点点整理,希望对你有用! 整理了一下Github上几个开源的音视频播放器项目,有兴趣的同学可以clone代码去研究学习. 1.UniversalMusicPlayer ht ...
- Google zxing实现二维码扫描完美解决方案
最近因项目需求,需要在App中集成二维码扫描的功能.网上找了很多资料,最后决定使用Google的zxing来实现.实现的过程遇到了很多的坑,也是因为这些坑在网上没有具体的解决方案,今天就把我的实现过程 ...
- LeetCode题解之To Lower Case
1.题目描述 2.分析 遍历字符串,使用C++ 的 标准库函数 isalpha() 判断字符是否为 字母,然后对其做 tolower() . 3.代码 string toLowerCase(strin ...
- SQL Server 索引知识-结构,实现
索引的作用毋庸置疑,但他是如何组织,并实现提高语句访问效率的呢?本篇文章为大家做个详细的介绍. 聚集索引架构 B-tree 如图1-1 a.B-tree的结构,叶子节点为数据.数据按照聚集索引键有序排 ...
- selenium&phantomjs实战--漫话爬取
为什么直接保存当前网页,而不是找到所有漫话链接,再有针对性的保存图片? 因为防盗链的原因,当直接保存漫话链接图片时,只能保存到防盗链的图片. #!/usr/bin/env python # _*_ c ...