C# 执行SQL脚本文件


本文转载:http://www.cnblogs.com/anjou/archive/2010/08/10/1796563.html

 

代码 
public static int ExecuteSqlScript(string sqlFile)
{
     int returnValue  =  - 1;
     int sqlCount  =  0, errorCount  =  0;
     if (! File. Exists(sqlFile))
    {
         Log.WriteLog(string.Format("sql  file  not  exists!", sqlFile));
         return  - 1;
    }
    using (StreamReader sr  = new StreamReader(sqlFile))
    {
        string line  = string.Empty;
         char spaceChar  =  '   ';
        string newLIne  = "\r\n", semicolon  = ";";
        string sprit  = " /", whiffletree  = " -";               
        string sql  = string.Empty;
        do
        {
            line  = sr.ReadLine();
             // 文件结束
             if (line  ==  nullbreak;
             // 跳过注释行
             if (line.StartsWith(sprit)  || line.StartsWith(whiffletree))  continue;
             // 去除右边空格
            line  = line.TrimEnd(spaceChar);
            sql  += line;
             // 以分号(;)结尾,则执行SQL
             if (sql.EndsWith(semicolon))
            {
                try
                {
                    sqlCount ++;
                    SqlHelper.ExecuteNonQuery(sql,  null);
                }
                catch (Exception ex)
                {
                    errorCount ++;
                     Log.WriteLog(sql  +  newLIne  + ex.Message);  
                }                        
                sql  = string.Empty;
            }
             else
            {
                 // 添加换行符
                 if(sql.Length  >  0) sql  += newLIne;
            }
        }  while (true);
    }
     if (sqlCount  >  0  && errorCount  ==  0)
        returnValue  =  1;
     if (sqlCount  ==  0  && errorCount  ==  0)
        returnValue  =  0;
     else  if (sqlCount  > errorCount  && errorCount  >  0)
        returnValue  =  - 1;
     else  if (sqlCount  == errorCount)
        returnValue  =  - 2;
     return returnValue;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM