数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法
时间:2022-04-27
本文章向大家介绍数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用SQL语句来获取记录集的方法
string sql = "select col1,col2,col3 from TableName where ";
//获取DataTable
DataTable dt = dal.RunSqlDataTable(sql);
//获取DataSet
sql = "select col1,col2,col3 from TableName where ";
sql += " select col1,col2,col3 from TableName2 where ";
sql += " select col1,col2,col3 from TableName3 where ";
//
DataSet ds = dal.RunSqlDataSet(sql);
//ds.Tables[0]; //TableName 的记录
//ds.Tables[1]; //TableName2 的记录
//ds.Tables[2]; //TableName3 的记录
//只获取一条记录,记录保存到 string[] 里面
sql = "select col1,col2,col3 from TableName where ID = 1";
string[] values1 = dal.RunSqlStrings(sql);
//只获取一条记录,记录保存到 DataRow 里面。可以通过字段名称来获取
DataRow dr = dal.RunSqlDataRow(sql);
//只获取第一条记录的第一个字段的值
sql = "select col1 from TableName where ID = 1";
sql = "select sum(col2) from TableName ";
string colValue = dal.RunSqlGetID(sql);
//获取每一条记录的第一个字段的值。
sql = "select col1 from TableName where KindID = 1";
sql = "select sum(col2) from TableName group by KindID";
string[] values2 = dal.RunSqlStringsByRow(sql);
/// 主要以DataTable 为数据载体。
/// 使用 DataTable 可以很方便的实现“通用”性,可以直接和许多控件绑定。
/// 使用 string[] 保存一条记录的数据,可以更轻量快捷的提取和保存数据。适用于字段比较少的情况。
/// 如果字段比较多可以使用 dal.RunSqlDataRow(sql); 的方式。
///
启用事务的方法
//使用事务的实例
//开始一个事务
dal.TranBegin();
//这时会open 一个连接。
dal.InsertDataStr("TableName1",str1,str); //添加数据
if (dal.ErrorMsg.Length > )
{
//出现异常,函数内部会自动回滚事务,并且关闭连接
return ; //终止程序,最好能够给出提示
}
//判断是否正常执行,
if (false) //没有正常执行,回滚事务
{
dal.TranRollBack(); //回滚事务,自动关闭连接 。
return ; //不能继续向下执行!
}
//执行下一个操作
dal.UpdateData("TableName2",str1,str,"ID = 2 "); //修改数据
if (dal.ErrorMsg.Length > )
{
//出现异常,函数内部会自动回滚事务,并且关闭连接
return ; //终止程序,最好能够给出提示
}
//判断是否正常执行,
if (false) //没有正常执行,回滚事务
{
dal.TranRollBack(); //回滚事务,自动关闭连接 。
return ; //不能继续向下执行!
}
//其他操作。
//比如 : colValue = dal.RunSqlGetID(sql);
dal.TranCommit(); //提交事务,自动关闭连接 。
/// 优点:在函数内部自动处理连接的打开和关闭的问题。
/// sql语句出现错误的时候,会在/log/里面建立一个文本文件,记录出错的信息。
/// 可以通过查看这个文件,快速分析出来出错原因,在使用sql语句的情况下帮助很大。
/// 缺点:没有提供 DataReader 。
///
- go 无锁队列
- Go语言如何提高快排的效率
- sublime text下的Markdown写作
- 基于GitHub Pages搭建的Blog
- 聊一聊goroutine stack
- about云日志分析项目准备高可靠centos7安装jdk1.8【rpm】
- spark开发基础之Scala详解apply方法
- spark开发基础之从Scala符号入门Scala
- spark入门(2.0.1版本):概述,下载,编译,运行环境及实例运行
- 切片的内部实现
- go interface
- 使用Spark MLlib给豆瓣用户推荐电影
- hadoop,hbase,hive,zookeeper版本整合兼容性最全,最详细说明【适用于任何版本】
- centos7:SSH公钥无密码认证
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- __all__ 是干嘛用的?
- 业务视角谈谈Kafka(第一篇)
- 面试必问:session,cookie和token的区别
- 14-2常见软件包管理任务
- Pytest之skip、skipif、xfail
- 为什么spring不推荐@Autowired注入,提示:Field injection is not recommended
- 使用springboot发送复杂类型正文的邮件
- 业务视角谈谈Kafka(第三篇)
- 图文详解互联网根基之HTTP
- Jenkins部署异常:报错 TomcatManagerException: FAIL - Unable to delete
- Spring Boot打包的jar运行的时候提示:没有主清单属性
- 主流消息队列选型技术比较
- 深入浅出-网络七层模型
- 【警惕】K8S下Telnet失效陷阱
- nginx优化之keepalive