PDF.NET(PWMIS数据开发框架)之SQL-MAP目标和规范

简介:

SQL-MAP的目标:

  1. 集中管理SQL语句,所有SQL语句放在专门的配置文件中进行管理;
  2. 通过替换SQL配置文件,达到平滑切换数据库到另外一个数据库,比如从Oracle的应用移植到SQLSERVER;
  3. 由DBA来写程序,对于复杂的查询,DBA写的SQL语句和存储过程更有保障更有效率,SQL-MAP工具让DBA也能够写.NET程序;
  4. 代码自动生成,由于在SQL配置文件中指定了很多编程特性,所以可以使用专用工具将配置文件映射到.NET代码;

 

PDF.NET 数据开发框架介绍(含实例程序下载)请看:

http://www.pwmis.com/sqlmap

 

SQL-MAP代码工具的详细使用介绍(图解)请看:
http://www.pwmis.com/sqlmap/toolshelp.htm
----------------------
SQL-MAP的规范:
1,通用配置:

SqlMap 配置节

 EmbedAssemblySource 属性:要将本文将嵌入的程序集名称和资源文件名称,格式为:
程序集名称,默认命名空间.文件名.扩展名

如果要将配置文件作为嵌入式文件编译,请指定该项值。该配置主要指导代码生成器生成相应的代码信息。

 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:noNamespaceSchemaLocation="SqlMap.xsd"  

将这句话加入到这里,可以使得SqlMap配置文件编写的时候具有智能提示。需要在当前目录下有sqlmap.xsd 文件。

 

2,节点类型

SQL-MAP的数据CRUD操作类型(CommandClass 的子节点类型):
          Select/Read:   选取数据操作;,
          Update:         更新数据操作;
          Insert/Create:新增数据操作;
          Delete:          删除数据操作。


 3,节点属性:

注:<>表示必选属性,[]表示可选属性        
   <CommandName>:查询的名字,对应于SqlMap数据实体类中的方法名;
   <CommandType>:查询命令类型,值为Text,StoredProcedure,TableDirect
   [ParameterClass]:查询参数类,在SQLMap 中表示为一个参数类;
   <#ParaName[:System.Type[,System.DbType[,Size[,ParameterDirection[,Precision,Scale]]]]]#>:
     ParaName:查询语句中对应的参数名,如果名称前缀有 @@ 标记,表示该参数是一个替换参数,将忽略后面的定义;
     System.Type:可选,符合CSL规范的类型(CLT)名称;
     System.DbType:可选,符合DbType 的枚举,如 AnsiString 等;
     Size:可选,表示参数长度;
     ParameterDirection:可选,表示参数的输入输出类型的枚举值
     Precision:可选,表示参数的数据精度,通常用于Decimal类型
     Scale:可选,表示参数的数据小数位,通常用于Decimal类型
    

{附注:

常用CLT:Byte,Int16,Int32,Int64,Single,Double,Boolean,Char,Decimal,String
[关于通用类型系统(CLT):ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconthecommontypesystem.htm ]
[DbType 枚举:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemDataDbTypeClassTopic.htm ]
}

    <Script > 配置节,除了有Type表面数据库类型之外,还必须有 ConnectionString ="" Version="" 这样的内容,否则,PdfCodeMaker.exe 代码生成不能生成代码文件。
       
   <ResultClass>:Select 查询的结果类型,
       如果返回单值的查询,请指定 为 ResultClass="ValueType";
       如果返回多个行结果集,可以指定 ResultClass="DataSet",将以System.Data.DataSet的方式填充;
                                也可以指定 ResultClass="EntityObject",那么将结果填充到实体类中;
                                或者指定 ResultClass="EntityList",那么将结果填充到实体类列表(集合)中。
                                
       注意:Insert/Update/Delete 操作类型不需要指定该属性。
                                
   <ResultMap>:仅仅在ResultClass="EntityObject" / "EntityList" 有效,表示实体类查询结果映射;
                   通常表示返回单行(也可返回多行)记录到一个数据实体对象的映射;
                   例如 要将结果集影射到一个名为 UserInfo 的自定义实体类中,注意必须使用类的全名称:
                   ResultClass="EntityObject" ResultMap="MyDAL.UserInfo"

 

  [SqlPage]:是否允许SqlMap分页,默认是False。该属性仅供代码生成器使用,不过目前的代码生成器还没有提供这样的功能。

                  开启该属性之后,在SqlMapDAL类的方法中,参数中需要增加一个分页信息数组,并且调用CommandInfo对象的SetPageInfo方法,如下面的实例代码(红色的部分为需要增加的代码):

 

复制代码
         ///   <summary>
        
///  返回成交明细(带分页)
        
///   </summary>
        
///   <param name="WhereString"> 查询条件 </param>
        
///   <param name="pageInfo"> 设置分页信息,pageInfo[ 0]=记录数量,pageInfo[ 1]=页码,pageInfo[ 2]=页大小 </param>
        
///   <returns></returns>
         public DataSet GetTradeList( string WhereString,   int [] pageInfo )
        {
             // 获取命令信息
            CommandInfo cmdInfo = Mapper.GetCommandInfo( " GetTradeList ");
             // 执行参数替换
            cmdInfo.SetParameterValue( " WhereString ", WhereString, enumParamType.ReplacedText);
             cmdInfo.SetPageInfo(pageinfo);
             // 执行查询
             return CurrentDataBase.ExecuteDataSet(CurrentDataBase.ConnectionString, cmdInfo.CommandType, cmdInfo.CommandText,  null);
             //
        } // End Function
复制代码

注意:你可以为你现有的SqlMapDAL方法增加一个重载,把这个重载的代码放入一个分部类文件中,这样就不用担心代码生成器的影响了。


   4,版本记录:               
   ver 1.0.2 修改:
   支持同名参数,如果脚本中有多个同名参数,那么首先处理遇到的第一个参数,忽略后面的同名参数定义;
   支持参数“字符串替换”,用于提供构造复杂动态SQL的支持,参数名用 % % 分割,
     例如 : Where #%WhereString%# 或者 Where # %WhereString% # ,系统忽略空白字符。
     
   ver 4.0 修改:
   <SqlPage>:仅仅在 SqlPage="True" 的时候,代码生成器将生成支持分页的DAL代码,具体过程就是在原有参数
   的最后增加一个可选参数 params int[] pageInfo,并在方法体中增加  cmdInfo.SetPageInfo (pageInfo ) 语句。


SQL-MAP生成工具

1,在VS的IDE中使用XSD:

根据该规范写了一个检查配置文件格式的XSD,文件地址:

http://files.cnblogs.com/bluedoctor/SqlMap.xsd.xml

由于博客园不允许上传XSD格式的文件,所以大家下载这个文件以后把.xml后缀名去掉即可。

在编写SQL-MAP配置文件的时候,在VS2008的菜单 “XML”-〉“架构”里面,选择这个文件即可。这样编写配置文件就可以有智能提示了。

注意:如果下载了PDF.NET集成开发工具,在工具的安装目录下面,也有这个sqlmap.xsd 文件。


2,使用SQL-MAP配置管理器:

这是一个可视化的编辑程序,可以在PdfNet集成开发工具中找到,也可以在之前版本的示例程序包中找到。

 

下图是一个SqlMap配置文件跟程序结构的示意图:

这个图例中,SqlMap.config 文件在SqlMapDAL目录下,因此将这个文件潜入式编译的时候,它在程序集中的全名称是“程序集默认命名空间.SqlMapDAL.SqlMap.config” ,注意这个名字对大小写敏感。EmbedAssemblySource的前面内容部分 “GroupStatistics.Repostitory” 是当前程序集的名称。


 

    本文转自深蓝医生博客园博客,原文链接:http://www.cnblogs.com/bluedoctor/archive/2011/05/07/2039527.html,如需转载请自行联系原作者



相关文章
|
4月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
384 3
|
4月前
|
SQL 数据采集 自然语言处理
NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比
NL2SQL之DB-GPT-Hub<详解篇>:text2sql任务的微调框架和基准对比
|
3月前
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
205 71
|
2月前
|
SQL 安全 Java
除了Flask框架,还有哪些框架能防止SQL注入攻击?
这些框架都在安全方面有着较好的表现,通过它们的内置机制和安全特性,可以有效地降低 SQL 注入攻击的风险。然而,无论使用哪个框架,开发者都需要具备良好的安全意识,正确配置和使用框架提供的安全功能,以确保应用的安全可靠。同时,持续关注安全更新和漏洞修复也是非常重要的。
125 60
|
2月前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
396 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
6月前
|
SQL Java 数据库
建模底层逻辑问题之ORM框架建模中,执行SQL的过程中被抽象和组织是如何实现的
建模底层逻辑问题之ORM框架建模中,执行SQL的过程中被抽象和组织是如何实现的
|
1月前
|
SQL 分布式计算 Java
Spark SQL向量化执行引擎框架Gluten-Velox在AArch64使能和优化
本文摘自 Arm China的工程师顾煜祺关于“在 Arm 平台上使用 Native 算子库加速 Spark”的分享,主要内容包括以下四个部分: 1.技术背景 2.算子库构成 3.算子操作优化 4.未来工作
|
3月前
|
SQL 自然语言处理 数据库
XiYan-SQL:一种多生成器集成的Text-to-SQL框架
XiYan-SQL 是一种创新的多生成器集成Text-to-SQL框架,通过M-Schema增强模型对数据库结构的理解,结合ICL与SFT方法提升SQL生成质量和多样性,经实验证明在多个数据集上表现优异,特别是在Spider和SQL-Eval上取得了领先成绩。
|
3月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
111 4
|
4月前
|
SQL
数仓规范之sql编写规范
编写SQL时,应遵循以下规范:所有关键字小写,表别名按a, b, c...顺序使用,复杂逻辑多行书写,提高可读性。SELECT字段需逐行列出,避免使用*,GROUP BY字段同样处理。WHERE条件多于一个时,每条件一行。JOIN子表推荐使用嵌套查询方式1,明确关联条件,避免笛卡尔积。关键逻辑需注释,INSERT SELECT后最外层字段加注释说明用途。示例中展示了推荐的JOIN替代子查询的写法,以提高代码的可读性和维护性。
203 1

热门文章

最新文章