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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值