ORM数据库访问技术

(请在电脑上打开页面,会获取更好的阅读效果)

 

常见的ORM技术(比如:Entity FrameworkDapperSqlSugarNHibernate,等),它们不是在做Sql语句的程序化变种,就是在做Sql语句的面向对象化。缺点显而易见:把简单的Sql语句复杂化、不伦不类、不符合标准的各家自定义语法格式、无统一标准难以大规模推广应用

ADO.NET也存在操作复杂、不同类型数据库(SqlServerMySqlOracle、等)操作代码需要重构等缺点。

 

本文要介绍的主角DeveloperSharp框架中的ORM数据库访问技术,则巧妙的规避了上述各种缺点,提供了一套折中且完善的解决方案,在IDataAccess接口中被实现。

 

IDataAccess所在的命名空间是:DeveloperSharp.Framework.QueryEngine

它主要提供了如下四大功能:

(1)     执行Sql语句

(2)     执行Sp存储过程

(3)     创建参数(输入/输出/返回)

(4)     事务

它初始化的代码如下:

using DeveloperSharp.Framework.QueryEngine;

--------------------------

 

   DatabaseInfo DIF;

   DIF.DatabaseType = DatabaseType.SQLServer; //设置数据库类型

   DIF.ConnectionString = "Server=localhost;Database=YZZ;Uid=sa;Pwd=123";

   IDataAccess IDA = DataAccessFactory.Create(DIF);

 

下面给出一个结合“Sql语句+参数+事务”的使用示例,代码如下:

            try

            {

                //开启事务

                IDA.TransactionBegin();

 

                //执行带参数的Sql语句

                var newQuantity = IDA.CreateParameterInput("newQuantity", DbType.Int32, 506);

                var newName = IDA.CreateParameterInput("newName", DbType.String, 50, "帽子");

                IDA.SqlExecuteNonQuery("update t_Order set Quantity=@newQuantity where Id=1", newQuantity);

                IDA.SqlExecuteNonQuery("update t_Order set Quantity=@newQuantity,Name=@newName  where Id=3", newQuantity, newName);

 

                //完成事务

                IDA.TransactionCommit();

            }

            catch

            {

                //回滚事务

                IDA.TransactionRollBack();

            }

注意:创建参数时使用DbType类型,就是为了能在不同类型数据库(SqlServerMySqlOracle、等)之间透明切换!

 

 

IDataAccess内拥有的详细功能方法说明如下:

DatabaseType

声明:DatabaseType DatabaseType{get;}

用途:获取数据库类型

返回:DatabaseType        --  数据库类型枚举

 

ConnectionString

声明:string ConnectionString{get;}

用途:获取数据库链接字符串

返回:string     --  数据库链接字符串

 

CreateParameterInput

声明:IDataParameter CreateParameterInput(string name, DbType type, int size, object val)

用途:创建输入参数

参数:(1string name      --  参数名

     2DbType type   --  参数类型

         3int size            -- 参数大小

         4object val                --参数值

返回:IDataParameter      --  输入参数

 

CreateParameterInput

声明:IDataParameter CreateParameterInput(string name, DbType type, object val)

用途:创建输入参数

参数:(1string name      --  参数名

     2DbType type   --  参数类型

         3object val                --参数值

返回:IDataParameter      --  输入参数

 

CreateParameterOutput

声明:IDataParameter CreateParameterOutput(string name, DbType type, int size)

用途:创建输出参数

参数:(1string name     --参数名

         2DbType type   --参数类型

         3int size    --参数大小

返回:IDataParameter    --  输出参数

 

CreateParameterOutput

声明:IDataParameter CreateParameterOutput(string name, DbType type)

用途:创建输出参数

参数:(1string name     --参数名

         2DbType type   --参数类型

返回:IDataParameter    --  输出参数

 

CreateParameterReturn()

声明:IDataParameter CreateParameterReturn()

用途:创建返回参数

参数:(无)

返回:IDataParameter       --  返回参数

 

TransactionBegin

声明:void TransactionBegin()

用途:开启事务

参数:(无)

返回:(无)

 

TransactionCommit

声明:void TransactionCommit()

用途:完成事务

参数:(无)

返回:(无)

 

TransactionRollBack

声明:void TransactionRollBack

用途:回滚事务

参数:(无)

返回:(无)

 

SqlExecuteNonQuery

声明:int SqlExecuteNonQuery(string cmdText)

用途:执行Sql命令文本,返回受影响的行数

参数:(1string  cmdText      -- Sql命令文本

返回:int --受影响的行数

 

SqlExecuteNonQuery

声明:int SqlExecuteNonQuery(string cmdText , params IDataParameter[] cmdParameters)

用途:执行Sql命令文本,返回受影响的行数

参数:(1string  cmdText      -- Sql命令文本

         2params IDataParameter[] cmdParameters --命令参数数组

返回:int --受影响的行数

 

SpExecuteNonQuery

声明:int SpExecuteNonQuery(string cmdText)

用途:执行Store Procedure命令文本,返回受影响的行数

参数:(1string  cmdText      --Store Procedure命令文本

返回:int --受影响的行数

 

SpExecuteNonQuery

声明:int SpExecuteNonQuery(string cmdText, params IDataParameter[] cmdParameters)

用途:执行Store Procedure命令文本,返回受影响的行数

参数:(1string cmdText -- Store Procedure命令文本

         2params IDataParameter[] cmdParameters --命令参数数组

返回:int          --受影响的行数

 

SqlExecuteReader

声明:IDataReader SqlExecuteReader(string cmdText)

用途:执行Sql命令文本,返回DataReader对象

参数:(1string  cmdText      -- Sql命令文本

返回:IDataReader   -- DataReader对象

 

SqlExecuteReader

声明:IDataReader SqlExecuteReader (string cmdText, params IDataParameter[] cmdParameters)

用途:执行Sql命令文本,返回DataReader对象

参数:(1string  cmdText      -- Sql命令文本

         2params IDataParameter[] cmdParameters --命令参数数组

返回:IDataReader   -- DataReader对象

 

SpExecuteReader

声明:IDataReader SpExecuteReader(string cmdText)

用途:执行Store Procedure命令文本,返回DataReader对象

参数:(1string  cmdText      -- Store Procedure命令文本

返回:IDataReader   -- DataReader对象

 

SpExecuteReader

声明:IDataReader SpExecuteReader(string cmdText, params IDataParameter[] cmdParameters)

用途:执行Store Procedure命令文本,返回DataReader对象

参数:(1string  cmdText      -- Store Procedure命令文本

         2params IDataParameter[] cmdParameters --命令参数数组

返回:IDataReader   -- DataReader对象

 

SqlExecuteScalar

声明:object SqlExecuteScalar(string cmdText)

用途:执行Sql命令文本,返回sumavgmax等聚合函数计算出的值

参数:(1string  cmdText      -- Sql命令文本

返回:object    --聚合函数计算出的值

 

SqlExecuteScalar

声明:object SqlExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)

用途:执行Sql命令文本,返回sumavgmax等聚合函数计算出的值

参数:(1string  cmdText      -- Sql命令文本

         2params IDataParameter[]  cmdParameters       --命令参数数组

返回:object    --聚合函数计算出的值

 

SpExecuteScalar

声明:object SpExecuteScalar(string cmdText)

用途:执行Store Procedure命令文本,返回sumavgmax等聚合函数计算出的值

参数:(1string  cmdText      -- Store Procedure命令文本

返回:object    --聚合函数计算出的值

 

SpExecuteScalar

声明:object SpExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)

用途:执行Store Procedure命令文本,返回sumavgmax等聚合函数计算出的值

参数:(1string  cmdText      -- Store Procedure命令文本

         2params IDataParameter[] cmdParameters --命令参数数组

返回:object    --聚合函数计算出的值

 

SqlExecuteDataset

声明:void SqlExecuteDataset(string cmdText, DataSet ds)

用途:执行Sql命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Sql命令文本

         2DataSet ds      --数据集对象

返回:(无)

 

SqlExecuteDataset

声明:void  SqlExecuteDataset(string cmdText, DataSet ds, string tableName)

用途:执行Sql命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Sql命令文本

         2DataSet ds      --数据集对象

         3string tableName     --数据集中的数据表名

返回:(无)

 

SqlExecuteDataset

声明:void SqlExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)

用途:执行Sql命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Sql命令文本

         2DataSet ds      --数据集对象

         3params IDataParameter[] cmdParameters --命令参数数组

返回:(无)

 

SqlExecuteDataset

声明:void SqlExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)

用途:执行Sql命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Sql命令文本

         2DataSet ds      --数据集对象

         3string tableName     --数据集中的数据表名

         4params IDataParameter[] cmdParameters --命令参数数组

返回:(无)

 

SpExecuteDataset

声明:void SpExecuteDataset(string cmdText, DataSet ds)

用途:执行Store Procedure命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Store Procedure命令文本

         2DataSet ds      --数据集对象

返回:(无)

 

SpExecuteDataset

声明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName)

用途:执行Store Procedure命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Store Procedure命令文本

         2DataSet ds      --数据集对象

         3string tableName     --数据集中的数据表名

返回:(无)

 

SpExecuteDataset

声明:void SpExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)

用途:执行Store Procedure命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Store Procedure命令文本

         2DataSet ds      --数据集对象

         3params IDataParameter[] cmdParameters --命令参数数组

返回:(无)

 

SpExecuteDataset

声明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)

用途:执行Store Procedure命令文本,获取相应的DataSet数据集

参数:(1string  cmdText      -- Store Procedure命令文本

         2DataSet ds      --数据集对象

         3string tableName     --数据集中的数据表名

         4params IDataParameter[] cmdParameters --命令参数数组

返回:(无)