`
greenmoon
  • 浏览: 48635 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自动忽略参数条件的sql解析器

 
阅读更多

很久之前就想写个解析sql解析器,能够实现根据输入参数自动保留或或者忽略条件的类库,比如:select * from b where id=@id or name=@name,在有的情况下需要保留id而去除name条件,则直接输入的参数列表是·@id就可以了,name条件会自动被忽略掉,却一直苦于太难而没有勇气写下去,年初项目工期比较紧,需要这个功能的类库来简化数据库开发,被逼无奈,却发现不是很难,匆匆完成,经过一个项目的使用,程序没有任何问题,开发效率提高了很多,由于那个项目是使用c写的,在c#下使用很不方便,最近有点时间就移植到了c#上,测试一下,效果还不错,c版的只支持mysql,这次移植增加了sql server,sybase,oracle的语法支持,增加了 where (select count(*) from b where date>@dt) > 1这种类型的条件的支持。

总结来说,这次的移植后,支持子查询,复杂参数的函数,嵌套函数,多重括号,union等的支持。完全开源免费。

下载:http://code.google.com/p/sqlparserlib/downloads/list

分享到:
评论

相关推荐

    sql注入攻击防范解析

    1. **参数化查询**:使用预编译的SQL语句,如PDO和参数化存储过程,使用户输入的数据不会与SQL命令混淆。 2. **输入验证**:对用户输入进行严格的检查,拒绝不合法或格式错误的输入。 3. **转义特殊字符**:对可能的...

    PL/SQL Developer 7.0

    ### PL/SQL Developer 7.0 用户指南关键知识点解析 #### 一、介绍 **PL/SQL Developer** 是一款专为 Oracle 数据库设计的强大集成开发环境(IDE),它旨在简化和提升 PL/SQL 应用程序的开发效率。版本 7.0 作为该...

    数据库sqlserver攻关

    SQL另类排序问题可能指的是在实现复杂的排序逻辑时遇到的困难,例如在排序时忽略某些行或者改变排序的方向等。 ### SQL面试题(NotExists与Exists的区别与算法) 在SQL中,NOT EXISTS和EXISTS子句用于控制查询条件,...

    MySQL数据库在中小型业务系统的应用.pdf

    在参考完整性方面,虽然不直接支持检查约束和外部关键字,但SQL解析器能够接受这些语句的语法,为未来升级提供了便利。 针对中小型业务系统的优化方案,可以从以下几个方面考虑: 1. **逻辑数据设计**:在数据库...

    MyBatis 需要注意的地方junit注解

    @RunWith 指定测试类使用的某个运行器参数SpringJUnit4ClassRunner.class @Parameters 指定参数类的参数数据集合 @Rule 允许灵活添加或重新定义测试类中的每个测试方法的行为 @FixMethodOrder 指定测试方法的执行...

    Mybatis系列教程Mybatis源码剖析共15页.pd

    6. **动态SQL**:Mybatis允许在XML映射文件中使用条件标签,如`<if>`, `<choose>`, `<when>`, `<otherwise>`等,实现动态生成SQL语句。 7. **参数映射与结果集映射**:Mybatis支持各种参数和结果映射方式,如@Param...

    db2错误返回码

    这通常意味着在一个SQL语句中使用了未明确指定表的列名,DB2根据上下文自动关联到了某个表。 - **+09801568**:动态SQL语句用分号结束。这种情况下,虽然SQL语句能够正确执行,但使用分号作为结束符可能会导致一些...

    支持多数据库的ORM框架ef-orm.zip

    EF-ORM中采用了独特的SQL解析和改写技术,能够主动检查并确保SQL语句或者SQL片段在各个数据库上的兼容性。 EF中除了Criteria API以外,可以直接使用“SQL语句”或者“SQL片段”。但是这些SQL语句并不是直接传送给...

    传智播客mybatis笔记

    3. **参数设置**:使用`PreparedStatement`设置SQL语句中的参数时,如果SQL中的条件经常变化,则可能导致代码的重复修改,降低了系统的可维护性。 ```java preparedStatement.setString(1, "王五"); ``` 4. **...

    微型 ORM-FluentData 实例详解1

    本篇文章将深入解析FluentData的使用方法和核心概念,帮助开发者更好地理解和应用这个库。 首先,FluentData支持多种数据库系统,包括MS SQL Server、Azure SQL、MS Access、SQL Server Compact 4.0、Oracle、MySQL...

    DB2 错误代码

    - **01598**:尝试激活活动的事件监视器,或尝试释放不活动的事件监视器。 - **01599**:忽略 REBIND 上的绑定选项。 - **01602**:优化级别已降低。 - **01603**:CHECK DATA 处理过程中发现约束违例,已将其移...

    DB2错误代码提示

    这通常发生在创建索引时不包括NULL值的情况下,WHERE NOT NULL条件会被自动忽略。 - **+650 / 01538**:不能更改或者建立已命名的表为从属表。这通常发生在尝试将已有名字的表更改为从属表时。 - **+653 / 01551**:...

    db2错误代码查看.

    - **描述**:SQL查询没有找到符合条件的数据行。 - **处理方法**:检查WHERE子句是否正确,以及表中是否有预期的数据。 **6. +11001561 - 用DATACAPTURE定义的表的更新操作不能发送到原来的子系统** - **描述**...

    DB2错误解决手册

    - **01598** - **事件监视器问题**:当尝试激活活动的事件监视器或释放不活动的事件监视器时,会发出此警告。需要正确管理事件监视器的状态。 - **01599** - **REBIND绑定选项被忽略**:如果REBIND上的绑定选项被...

    DB2错误代码.doc

    | 01598 | 尝试激活活动的事件监视器,或尝试释放不活动的事件监视器。 | | 01599 | 忽略REBIND上的绑定选项。 | | 01602 | 优化级别已降低。 | | 01603 | CHECK DATA处理过程中发现约束违例,已将其移至异常表。 | ...

    2021-2022计算机二级等级考试试题及答案No.9111.docx

    - **概念澄清**:CPU(中央处理器)直接处理的数据通常来自于内存,而不是外存(如硬盘驱动器、USB驱动器等)。这是因为CPU通过高速缓存和内存来获取和处理数据,而外存的数据传输速度远低于内存。 - **正确理解**:...

    1000道 互联网Java工程师面试题 485页

    - **分页插件原理**:拦截SQL语句,自动添加分页参数。 #### 11、Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? - **封装方式**:通过`resultMap`来定义结果集与Java对象之间的映射关系...

    WEB考试题.docx

    通过预编译SQL语句并使用参数化查询,可以避免恶意输入被解释为SQL命令的一部分。 ### Servlet过滤器机制 - **知识点**:实现Servlet过滤器需要实现的接口及过滤器的工作流程。 - **解析**: - 实现过滤器需要...

    有关数据库导入的问题

    例如,CSV文件适用于大多数数据库系统,而XML或JSON文件可能需要特定的解析器。 2. **SQL命令**:使用`LOAD DATA INFILE`(MySQL)、`BULK INSERT`(SQL Server)或`COPY`(PostgreSQL)等SQL命令可以快速批量导入...

Global site tag (gtag.js) - Google Analytics