数据访问函数库的使用方法(二)—— 获取记录集和使用事务的方法

使用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 。

            ///

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Pythonista

CMDB之数据采集

利用saltstack的salt.client模块可以在python的命令行下或者python脚本里执行相应的salt命令

3052
来自专栏运维前线

CentOS6 脚本自动安装redis sentinel

脚本自动安装redis sentinel(在同一台服务器上) #!/usr/bin/env bash # ---------------------------...

2857
来自专栏我的博客

课外阅读之ASP+access

1、准备知识: 了解VBScript或者JavaScript(下面多介绍VB系列的ASP),两者只是在语法有稍微的差别 2、输出 使用:response.w...

3607
来自专栏博客园

StackExchange.Redis 使用-配置 (四)

Configuration redis有很多不同的方法来配置连接字符串 , StackExchange.Redis 提供了一个丰富的配置模型,当调用Conne...

6533
来自专栏.NET技术

.net core实践系列之SSO-跨域实现

接着上篇的《.net core实践系列之SSO-同域实现》,这次来聊聊SSO跨域的实现方式。这次虽说是.net core实践,但是核心点使用jquery居多。

1543
来自专栏Esofar 开发日记

[译]RabbitMQ教程C#版 - 工作队列

在第一篇教程中,我们编写了两个程序,用于从一个指定的队列发送和接收消息。在本文中,我们将创建一个工作队列,用于在多个工作线程间分发耗时的任务。

982
来自专栏Esofar 开发日记

[译]RabbitMQ教程C#版 - “Hello World”

RabbitMQ是一个消息中间件:它接收并转发消息。您可以把它想象为一个邮局:当您把需要寄出的邮件投递到邮箱,邮差最终会把邮件送给您的收件人。在这个比喻中,Ra...

1203
来自专栏三丰SanFeng

redis配置详解(中英文)

V2.8.21: (中英字幕同步) # Redis configuration file example #* Redis 配置文件例子 # Note on...

2968
来自专栏流柯技术学院

linux下MySQL表名忽略大小写设置

最近公司项目的MySQL数据库要迁移到linux下,部署时日志总是显示报找不到一个表,用MYSQL查看明明有这个表。后来经百度,原来LINUX下的MYSQL默认...

3062
来自专栏飞雪无情的博客

Android HttpClient Session保持

现在单机版本的App已经不多了,基本上都会和服务器进行通信。Android提供Http访问的方式有两种,一种是HttpClient,一种是UrlConnecti...

1222

扫码关注云+社区

领取腾讯云代金券