如何读取 一个.SQL文件 并且实现检查各个关键字,把所有的小写改为大写!!!
随便有完整的语句,就可以轻易拿到20分哦!!!

解决方案 »

  1.   

    建议文件比较长的话,通常SQL语句都带有单独行的GO的,读到GO做一个段落进行处理,也是不错的。
      
    --------------------------------------------------------------
    程序,犹如人生。
      

  2.   

    可以考虑把SQL 关键字做成字典,然后用hash进行匹配
      

  3.   

    private string pattern = @"\bADD\b|\bEXECUTE\b|\bPRECISION\b|\bALL\b|\bEXISTS\b|\bPRIMARY\b|\b
    ALTER\b|\bEXIT\b|\bPRINT\b|\bAND\b|\bEXTERNAL\b|\bPROC\b|\bANY\b|\bFETCH\b|\bPROCEDURE\b|\bAS\b|\bFILE\b|\b
    PUBLIC\b|\bASC\b|\bFILLFACTOR\b|\bRAISERROR\b|\bAUTHORIZATION\b|\bFOR\b|\bREAD\b|\bBACKUP\b|\bFOREIGN\b|\b
    READTEXT\b|\bBEGIN\b|\bFREETEXT\b|\bRECONFIGURE\b|\bBETWEEN\b|\bFREETEXTTABLE\b|\bREFERENCES\b|\bBREAK\b|\b
    FROM\b|\bREPLICATION\b|\bBROWSE\b|\bFULL\b|\bRESTORE\b|\bBULK\b|\bFUNCTION\b|\bRESTRICT\b|\bBY\b|\bGOTO\b|\b
    RETURN\b|\bCASCADE\b|\bGRANT\b|\bREVERTCASE\b|\bGROUP\b|\bREVOKE\b|\bCHECK\b|\bHAVING\b|\bRIGHT\b|\bCHECKPOINT\b|\b
    HOLDLOCK\b|\bROLLBACK\b|\bCLOSE\b|\bIDENTITY\b|\bROWCOUNT\b|\bCLUSTERED\b|\bIDENTITY_INSERT\b|\bROWGUIDCOL\b|\b
    COALESCE\b|\bIDENTITYCOL\b|\bRULE\b|\bCOLLATE\b|\bIF\b|\bSAVE\b|\bCOLUMN\b|\bIN\b|\bSCHEMA\b|\bCOMMIT\b|\bINDEX\b|\b
    SELECT\b|\bCOMPUTE\b|\bINNER\b|\bSESSION_USER\b|\bCONSTRAINT\b|\bINSERT\b|\bSET\b|\bCONTAINS\b|\bINTERSECT\b|\b
    SETUSER\b|\bCONTAINSTABLE\b|\bINTO\b|\bSHUTDOWN\b|\bCONTINUE\b|\bIS\b|\bSOME\b|\bCONVERT\b|\bJOIN\b|\bSTATISTICS\b|\b
    CREATE\b|\bKEY\b|\bSYSTEM_USER\b|\bCROSS\b|\bKILL\b|\bTABLE\b|\bCURRENT\b|\bLEFT\b|\bTABLESAMPLE\b|\bCURRENT_DATE\b|\b
    LIKE\b|\bTEXTSIZE\b|\bCURRENT_TIME\b|\bLINENO\b|\bTHEN\b|\bCURRENT_TIMESTAMP\b|\bLOAD\b|\bTO\b|\bCURRENT_USER\b|\b
    NATIONAL\b|\bTOP\b|\bCURSOR\b|\bNOCHECK\b|\bTRAN\b|\bDATABASE\b|\bNONCLUSTERED\b|\bTRANSACTION\b|\bDBCC\b|\bNOT\b|\b
    TRIGGER\b|\bDEALLOCATE\b|\bNULL\b|\bTRUNCATE\b|\bDECLARE\b|\bNULLIF\b|\bTSEQUAL\b|\bDEFAULT\b|\bOF\b|\bUNION\b|\b
    DELETE\b|\bOFF\b|\bUNIQUE\b|\bDENY\b|\bOFFSETS\b|\bUNPIVOT\b|\bDESC\b|\bON\b|\bUPDATE\b|\bDISK\b|\bOPEN\b|\b
    UPDATETEXT\b|\bDISTINCT\b|\bOPENDATASOURCE\b|\bUSE\b|\bDISTRIBUTED\b|\bOPENQUERY\b|\bUSER\b|\bDOUBLE\b|\bOPENROWSET\b|\b
    VALUES\b|\bDROP\b|\bOPENXML\b|\bVARYING\b|\bDUMMY\b|\bOPTION\b|\bVIEW\b|\bDUMP\b|\bOR\b|\bWAITFOR\b|\bELSE\b|\b
    ORDER\b|\bWHEN\b|\bEND\b|\bOUTER\b|\bWHERE\b|\bERRLVL\b|\bOVER\b|\bWHILE\b|\bESCAPE\b|\bPERCENT\b|\bWITH\b|\b
    EXCEPT\b|\bPIVOT\b|\bWRITETEXT\b|\bEXEC\b|\bPLAN\b";        private void button1_Click(object sender, EventArgs e)
            {
                pattern = pattern.Replace("\r\n", "");
                textBox2.Text = Regex.Replace(textBox1.Text, pattern, new MatchEvaluator(Replace), RegexOptions.IgnoreCase | RegexOptions.Compiled);
            }        private string Replace(Match match)
            {
                return match.Value.ToUpper();
            }
      

  4.   

    using System.Text.RegularExpressions;
    有没有加?