zoukankan      html  css  js  c++  java
  • 利用〔正则〕检查.NET访问数据库Sql的正确性

    背景
            利用.NET访问数据库的时候,需要写一些SQL语句。但是由于SQL的可读性、
    不好测试的特点。经常会写错字母,漏写了参数等。直到写界面层的时候才发现
    问题,回头再来改,十分痛苦。

    想法
            利用数据库访问脚本及其数据库字段的命名约定。比如,INT类型就用INT
    结尾,VARCHAR就用VCHR结尾等。有了这些,我们就可以根据约定自动生成
    相关类型的数据了。下面就是利用程序生成的例子!

    UPDATE TABLE
    SET 
    COLUMNNAME1_VCHR 
    = ?,
    COLUMNNAME2_CHR 
    = ?,
    COLUMNNAME3_VCHR 
    = ?
    WHERE COLUMNNAME4_INT = ?
    ===   CONVERT TO == >>>
    UPDATE TABLE 
    SET 
    COLUMNNAME1_VCHR
    ='aaaa',
    COLUMNNAME2_CHR
    ='aaaa',
    COLUMNNAME3_VCHR
    ='aaaa' 
    WHERE COLUMNNAME4_INT=17;


    然后这些脚本就可以在SQLNavigat中运行了,以判断字段的正确与否。

    正则表达式
             利用正则表达式匹配、捕抓一些我们需要的特定格式的数据非常的方便。比
    如,捕抓 "ColumnName=?"  "INSERT ..." "SELECT ..."  "(?,?,?,?)"  等。这样我们就可
    以快速的捕抓出这些数据,然后根据命名约定进行数据替换。
             几个正则Pattern(不是太严谨),有关正则的学习,可以参照我Blog中的资源
    几个模式:
         匹配    "INSERT ..." "SELECT ..." "DELETE..." "UPDATE ..."    
                    "\s*(INSERT|DELETE|SELECT|UPDATE) ((?!\" ).)*"
        
         匹配    " VAR = ?" "VAR<?" "VAR>?" "VAR>=?"
                     \w*\s*  ( \= | \> | \>\= | \<\= | \!\= )   \s*\?
         匹配    "(?, ?, ?, ?)"
                     \( ((?!\().)*\)
        
    程序片断

    根据约定生成测试值


    private string GenerateRadomValue(string columnName)
            
    {
                
    string strRadom = string.Empty;
                
    if (columnName.Contains("INT"))
                
    {
                    Random ran 
    = new Random();
                    strRadom 
    = ran.Next(100).ToString();
                }

                
    else if (columnName.Contains("CHR"|| columnName.Contains("VCHR"))
                
    {
                    strRadom 
    = "'aaaa'"// 自己定义
                }

                
    else if (columnName.Contains("DAT"|| columnName.Contains("DT")) 
                
    {
                    strRadom 
    = "to_date('2005-11-25 00:00:00', 'yyyy-MM-dd hh24:mi:ss')";
                }

                
    return strRadom;
            }

    程序下载
            源程序 下载


  • 相关阅读:
    JS监听组合按键
    XSS初体验
    debuggap,移动端调试新方式
    简析分页逻辑
    【译】Javascript中的数据类型
    【译】typeof null的前世今生
    一个跨域请求的XSS漏洞再续
    H5页面音频自动播放问题
    一个跨域请求的XSS续
    成功自我管理之压力管理
  • 原文地址:https://www.cnblogs.com/xianyun/p/450122.html
Copyright © 2011-2022 走看看