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

简介: 使用SQL语句来获取记录集的方法string sql = "select col1,col2,col3  from TableName where ";            //获取DataTable            DataTable dt = dal.

使用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  >   2 )
            
{
                
//出现异常,函数内部会自动回滚事务,并且关闭连接
                return ;    //终止程序,最好能够给出提示
            }


            
// 判断是否正常执行,
             if  ( false )     // 没有正常执行,回滚事务
             {
                dal.TranRollBack();    
//回滚事务,自动关闭连接 。
                return ;            //不能继续向下执行!
            }


            
// 执行下一个操作
            dal.UpdateData( " TableName2 " ,str1,str, " ID = 2  " );     // 修改数据
             if  (dal.ErrorMsg.Length  >   2 )
            
{
                
//出现异常,函数内部会自动回滚事务,并且关闭连接
                return ;    //终止程序,最好能够给出提示
            }

            
// 判断是否正常执行,
             if  ( false )     // 没有正常执行,回滚事务
             {
                dal.TranRollBack();    
//回滚事务,自动关闭连接 。
                return ;            //不能继续向下执行!
            }


            
// 其他操作。

            
// 比如 : colValue = dal.RunSqlGetID(sql); 

            dal.TranCommit();    
// 提交事务,自动关闭连接 。


            
/**/ /// 优点:在函数内部自动处理连接的打开和关闭的问题。
            
/// sql语句出现错误的时候,会在/log/里面建立一个文本文件,记录出错的信息。
            
/// 可以通过查看这个文件,快速分析出来出错原因,在使用sql语句的情况下帮助很大。
            
            
/// 缺点:没有提供 DataReader 。
            
/// 

相关文章
|
21天前
|
存储 SQL Oracle
Oracle存储过程与自定义函数的调用:异同与实战场景
【4月更文挑战第19天】Oracle的存储过程与自定义函数各有特色,存储过程用于封装复杂SQL操作,常在批量处理和数据维护中使用,通过CALL或EXECUTE调用;而自定义函数则用于简单计算和查询,返回单一值,可直接在SQL语句中调用。了解两者异同,如返回值方式、调用方式和应用场景,能提升数据库管理效率。实战场景包括:使用存储过程定期清理过期数据,用自定义函数在查询中动态计算字段值。
|
存储 SQL 关系型数据库
Mysql数据库基础第六章:变量、存储过程与函数
在mysql中,可以使用变量来存储查询或计算结果,类似python中的变量。在mysql中主要分为:系统变量和自定义变量
|
存储 SQL 算法
MySQL基础篇(04):存储过程和视图,用法和特性详解
MySQL基础篇(04):存储过程和视图,用法和特性详解
163 0
|
SQL 安全 PHP
封装数据库操作类(读操作)|学习笔记
快速学习封装数据库操作类(读操作)
76 0
封装数据库操作类(读操作)|学习笔记
|
SQL PHP 开发者
封装 PDO(读操作+测试)|学习笔记
快速学习封装 PDO(读操作+测试)
85 0
封装 PDO(读操作+测试)|学习笔记
|
SQL PHP 数据库
封装数据库操作类(写操作)|学习笔记
快速学习封装数据库操作类(写操作)
65 0
|
SQL PHP 数据库
封装数据库操作类( SQL 执行检查)|学习笔记
快速学习封装数据库操作类( SQL 执行检查)
108 0
封装数据库操作类( SQL 执行检查)|学习笔记
|
存储 SQL Oracle
Oracle存储过程与存储函数-入门
Oracle存储过程与存储函数-入门
|
小程序 数据库
通过队列解决sqllite多线程报错的问题(实现多线程增删改查,以字典形式查询结果)
小程序后台用的sqllite数据库,刚开始用的时候,没有考虑多线程,而且当时因为数据量少,没有出现过多线程查询报错,现在数据量大了。多线程查询经常报错 ProgrammingError: Recursive use of cursors not allowed. 就是这个头疼的错。在网上查了大量的资料,要么就是加lock=threading.lock(),要么就是加sleep.终究还是解决不了问题。 刚好最近在网上看了一个小哥哥用Queue来解决这个问题。我改进了一下。目前能够使用该方法进行增删改查。查询出来的结果以字典的形式返回。
860 0