none
C#读取SQL脚本中指定关键字内SQL语句 RRS feed

  • 问题

  • 目前已有的SQL脚本文件如下:

    sql.txt  
    ---------------------
    # 注释...........
    # 注释...........

    sqlbegin

    //这里是SQL语句

    sqlend
    quit

    我现在想用StreamReader,只读取sqlbegin 至 sqlend 关键字里的内容,应该如何做?

                StreamReader sr = new StreamReader("sql.txt", System.Text.Encoding.Default);

                string strLine = sr.ReadLine();

                while (strLine != null)
                {
                    richTextBox1.Text += strLine + "\n";
                    strLine = sr.ReadLine();
                }
                sr.Close();

     

    2011年8月10日 7:01

答案

  • Hi:

    System.IO.StreamReader sr = new System.IO.StreamReader(@"D:\sql.txt");
    
          string strLine = "";
          bool isCopy = false;
          while ((strLine = sr.ReadLine()) != null)
          {
            if (strLine.Contains("sqlbegin"))
            {
              isCopy = true;
              strLine = sr.ReadLine();
            }
            if (strLine.Contains("sqlend"))
            {
              isCopy = false;
            }
    
            if (isCopy)
            {
              richTextBox1.Text += strLine + "\n";
            }
    
            
          }
          sr.Close();
    
    
    

     


    Shadowと愉快なコード達
    2011年8月10日 8:14
  •       using (StreamReader sr = new StreamReader("sql.txt", System.Text.Encoding.Default))
          {
            string strLine = sr.ReadToEnd();
            string sSQL = strLine.Split(new string[] { "sqlbegin"}, StringSplitOptions.None)[1].
              Split(new string[] { "sqlend"}, StringSplitOptions.None)[0];
          }
    


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年8月10日 9:15

全部回复

  • Hi:

    System.IO.StreamReader sr = new System.IO.StreamReader(@"D:\sql.txt");
    
          string strLine = "";
          bool isCopy = false;
          while ((strLine = sr.ReadLine()) != null)
          {
            if (strLine.Contains("sqlbegin"))
            {
              isCopy = true;
              strLine = sr.ReadLine();
            }
            if (strLine.Contains("sqlend"))
            {
              isCopy = false;
            }
    
            if (isCopy)
            {
              richTextBox1.Text += strLine + "\n";
            }
    
            
          }
          sr.Close();
    
    
    

     


    Shadowと愉快なコード達
    2011年8月10日 8:14
  •       using (StreamReader sr = new StreamReader("sql.txt", System.Text.Encoding.Default))
          {
            string strLine = sr.ReadToEnd();
            string sSQL = strLine.Split(new string[] { "sqlbegin"}, StringSplitOptions.None)[1].
              Split(new string[] { "sqlend"}, StringSplitOptions.None)[0];
          }
    


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年8月10日 9:15