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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏草根专栏

asp.net web api 2.2 基础框架(带例子)

简介 这个是我自己编写的asp.net web api 2.2的基础框架,使用了Entity Framework 6.2(beta)作为ORM。 该模板主要采用...

69090
来自专栏岑玉海

RavenDb学习(三)静态索引

在静态索引这块,RavenDb其实的是lucene,所以里面有很多概念,其实都是lucene本身的。 1.定义静态Indexes documentStore....

39970
来自专栏技术小讲堂

LINQ to SQL(1):基础入门

LINQ to SQL是在SQL SERVER数据库上设置一个强类型化界面的方式,LINQ to SQL提供的方式是目前我所见到查询SQL SERVER最简单也...

34860
来自专栏菩提树下的杨过

温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值

单线程的winfom程序中,设置一个控件的值是很easy的事情,直接 this.TextBox1.value = "Hello World!";就搞定了,但是如...

26750
来自专栏JadePeng的技术博客

使用Mongodb 做对象缓存

mongodb高效的访问速度,用来快速存取数据再合适不过了,缓存神马的,可以用这个的 另外,有的时候,如果仅仅存储几条数据,单独去建立一张表代价太大,这个时候,...

53350
来自专栏.NET开发那点事

AgileRepository - 一个基于接口的Repository快速开发库

这是一个可以帮助你快速开发Repository的lib。有点像SpringData JPA根据方法名、注解来自动生成查询方法的功能。 对于一些简单的查询,只需...

10220
来自专栏逸鹏说道

Z.ExtensionMethods 一个强大的开源扩展库

今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去看了一下,也都只是提...

32560
来自专栏跟着阿笨一起玩NET

NPOI简述与运用

最近想把项目中Excel中的操作部分改成NPOI ,由于2.0版本已经支持office07/10格式,但还处于测试版不稳定,于是封装如下代码

15510
来自专栏电光石火

C#解析JSON

使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就能用。 首先添加引用:usin...

32090
来自专栏好好学java的技术栈

java爬虫带你爬天爬地爬人生,爬新浪

HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持...

25720

扫码关注云+社区

领取腾讯云代金券