星期三

c#程式碼中執行帶GO語句的SQL文件

在 C# 程式碼中執行一份 SQL 指令文件的內容。

遇到了兩個問題:

1.因為 SQL 文件中有 GO 語句,執行時會出錯 Incorrect syntax near 'GO'. 

2.如果將 SQL 文件中有 GO 語句全部去掉,則可能出現 SQL 運行錯誤。原因是去掉 GO 後,等於整個文件的內容一次執行,

  但是 SQL 文件有可能後面的內容需要在前面某些語句已經執行完的基礎上才能再次執行的。




解決辦法 


private void EditSql()

{

  string strSql = "";

  //strSql += "USE [" + DbName + "] \n";

  FileStream fs = new FileStream("CreateTables.sql", FileMode.Open);

  StreamReader sr = new StreamReader(fs, Encoding.Default);

  string s1 = "";

  while ((s1 = sr.ReadLine()) != null)

  {

       if (s1.Trim().ToUpper() != "GO")

       {

           strSql += (s1 + "\n");

       }

       else

       {

                           
         if (this.RunNonQuery(strSql))

           strSql = "";

         else

         {

           //Exception 

         }

       }

  }

  fs.Close();  
     

}


private bool RunNonQuery(string strSql)

{

  //bool flag = false;

  try

  {

    //run sql command

    SqlCommand cmd = new SqlCommand(strSql, conn);

    if (cmd.ExecuteNonQuery() != 0)

    {

      return true;

    }

               
  }

  catch(Exception e)

  {

    this.ErrorMessage = e.ToString();

    return false;

  }

}

沒有留言:

張貼留言