C# 执行SQL脚本文件

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

 

posted on 2010-08-10 15:26  大豆男生  阅读(2202)  评论(2编辑  收藏  举报

导航