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 == null) break;
// 跳过注释行
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;
}
{
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 == null) break;
// 跳过注释行
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;
}