用C#实现 从一个sql文件中取出 所有的关键字.要有完整的实现语句哦  实现后立即结帖................

解决方案 »

  1.   

    Replace方法里的
    match.Value就是关键字呀!
    你保存一下就可以了!
      

  2.   

    假如是1.sql文件,如何从里面取出来所有的关键字,具体到每一个语句
      

  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 ProcessSqlFile(string fileName)
    {
    StreamReader sr = new StreamReader(fileName);
    string line = String.Empty;
    while ((line = sr.ReadLine()) != null)
    {
    List<string> lineKeyword = ProcessLine(line);
    foreach (string keyword in lineKeyword)
    Console.WriteLine(keyword);
    }
    }        private List<string> ProcessLine(string line)
            {
    List<string> list = new List<string>();
                pattern = pattern.Replace("\r\n", "");
    Regex regKeywords = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);
    Match regMatch;for (regMatch = regKeywords.Match(line); regMatch.Success; regMatch = regMatch.NextMatch())
    {
    list.Add(regMatch.Value);
    }
    return list;
            }