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

 

时间: 2024-09-20 09:09:17

C# 执行SQL脚本文件的相关文章

java-操作数据库的.exe程序,可以批量执行sql脚本文件

问题描述 操作数据库的.exe程序,可以批量执行sql脚本文件 求大神帮忙啊~用java可以做这个东西吗?完全没有思路啊,要求是可以操作局域网内的另一台电脑上的mysql数据库 解决方案 如果有访问权限的话,直接运行Runtime.getRuntime().exec("远程IP文件路径exe文件");如果没有,那可以先用java进行telnet连接到那台机器,然后调用exe程序,再不行就只能在远程机器上写webservice服务然后调用了. 解决方案二: 批量执行SQL脚本 解决方案三

<求教>关于.sql脚本文件如何生成数据库的问题

问题描述 <求教>关于.sql脚本文件如何生成数据库的问题 我使用powerdesigner导出oracle 11g数据库的.sql脚本文件,然后在SQL Plus中执行.sql脚本文件,报出许多错误,包括表名无效,表或视图不存在,指定的索引不存在,在网上找到一些类似的问题,都没能解决,请问有大神知道该如何解决么? 解决方案 我没有用过PowerDesigner生成的脚本.不过一般来说,你从系统生成的脚本,前面有若干DROP的,都是防御性的,是怕你现在生成的库中有相同名称的对象,所以预先帮你把

java用ant.jar工具类执行sql脚本遇到问题

问题描述 java用ant.jar工具类执行sql脚本遇到问题 最近在研究用工具类ant.jar执行sql脚本文件,一般对数据和字段的操作都无问题,但当要执行生成触发器或者存储过程时却出错,有大神做过这方面的吗?或者用其他方法可以执行能生成存储过程和触发器的sql脚本?求解!新人无币,望见谅~ Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an

SQL Server中使用外部命令执行sql脚本

server|脚本|执行 Author:David EulerDate: 2004/09/28Email:de_euler-david@yahoo.com.cn 有任何问题,请与我联系:)    有时候我们需要多次运行一个文件夹下所有的sql脚本(可能时txt或者sql等文本文件)来更新Schema,文件多的时候需要多次执行,那么可以使用多条语句来执行sql脚本.--下面的查询语句在SQL Query中运行,将执行d:\vss下面的指定sql脚本,这些脚本的后缀都是txtexec master.

sql server自动生成批量执行SQL脚本的批处理

  场景: DBA那边给我导出了所有的存储.函数等等对象的创建脚本,有上千个文件. 现在需要将这些对象创建脚本导入到另外一个库,如何解决呢? 手动一个个执行显然不太现实. 于是手动写了一个批处理,将所有的文件形成一个.SQL的脚本,最后以@生成的.SQL脚本方式导入到目标库中. OS环境:WINDOWS xp 脚本内容如下: @echo off if exist list.sql del list.sql /q :input cls set input=: set /p input= 请输入要进

java执行SQL脚本的一个问题

问题描述 今天准备在java中,利用ant来执行sql脚本,进行数据相关脚本部署,如存储过程,建表等.运行过程中,出现了特别常见的sql语法错误.可以经过检查没有错误,为了保证没有错误,还特地在sqlserver的控制台直接用source来执行了一次,同样没有错误.sqlExec.setDriver(driver);sqlExec.setUrl(db);sqlExec.setUserid(user);sqlExec.setPassword(password);//有出错的语句该如何处理sqlEx

.NET调用dat文件(dat文件调用sql脚本文件)路径问题,在线等

问题描述 sql脚本文件的父文件夹跟.dat文件同级..dat问价代码如下[isql-Usa-Psa-iSQL2000/jobs.sqlpause::pause按任意键继续...exit::exit退出]直接运行dat文件效果如下c:documentsandsettingsadministrator桌面bat执行SQL文件>isql-Usa-Psa-iSQL2000/jobs.sql执行成功!.net用Process的start方法调用dat文件时效果如下c:programfilesmicros

Ant 执行sql脚本 出现语法错误

问题描述 今天准备在java中,利用ant来执行sql脚本,进行数据相关脚本部署,如存储过程,建表等.运行过程中,出现了特别常见的sql语法错误.可以经过检查没有错误,为了保证没有错误,还特地在sqlserver的控制台直接用source来执行了一次,同样没有错误.sqlExec.setDriver(driver);sqlExec.setUrl(db);sqlExec.setUserid(user);sqlExec.setPassword(password);//有出错的语句该如何处理sqlEx

Inno Setup执行SQL脚本的方法

原文:Inno Setup执行SQL脚本的方法 作为和NSIS并立的.两个最流行的免费Windows应用程序安装包制作工具之一,Inno在学习难度上相对要低一些,非常适合对一些简单的桌面程序打包.但对于较复杂的安装过程,或者Web应用程序来说,我个人觉得不是Inno的强项.当然,既然Inno内嵌了Pascal语言用以扩展功能,理论上不是不可以应付复杂的安装过程,但实现起来要复杂一些. 比如对于在安装过程中连接数据库并执行SQL脚本这样的需求,使用InstallShield应该会简单地多,而Inn