C# 执行SQL脚本文件

简介: 本文转载:http://www.cnblogs.com/anjou/archive/2010/08/10/1796563.html   代码  public static int ExecuteSqlScript(string sqlFile){    int returnValue =...

本文转载: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;
}

 

目录
相关文章
|
8月前
|
SQL Java 数据库连接
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
【YashanDB知识库】解决mybatis的mapper文件sql语句结尾加分号";"报错
|
6月前
|
存储 监控 算法
基于 C# 的局域网计算机监控系统文件变更实时监测算法设计与实现研究
本文介绍了一种基于C#语言的局域网文件变更监控算法,通过事件驱动与批处理机制结合,实现高效、低负载的文件系统实时监控。核心内容涵盖监控机制选择(如事件触发机制)、数据结构设计(如监控文件列表、事件队列)及批处理优化策略。文章详细解析了C#实现的核心代码,并提出性能优化与可靠性保障措施,包括批量处理、事件过滤和异步处理等技术。最后,探讨了该算法在企业数据安全监控、文件同步备份等场景的应用潜力,以及未来向智能化扩展的方向,如文件内容分析、智能告警机制和分布式监控架构。
176 3
|
6月前
|
存储 SQL 数据库连接
C#程序调用Sql Server存储过程异常处理:调用存储过程后不返回、不抛异常的解决方案
本文分析了C#程序操作Sql Server数据库时偶发的不返回、不抛异常问题,并提出了解决思路。首先解析了一个执行存储过程的函数`ExecuteProcedure`,其功能是调用存储过程并返回影响行数。针对代码执行被阻塞但无异常的情况,文章总结了可能原因,如死锁、无限循环或网络问题等。随后提供了多种解决方案:1) 增加日志定位问题;2) 使用异步操作提升响应性;3) 设置超时机制避免阻塞;4) 利用线程池分离主线程;5) 通过信号量同步线程;6) 监控数据库连接状态确保可用性。这些方法可有效应对数据库操作中的潜在问题,保障程序稳定性。
494 11
|
8月前
|
SQL Java 数据库连接
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
【YashanDB 知识库】解决 mybatis 的 mapper 文件 sql 语句结尾加分号";"报错
|
8月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
|
9月前
|
JavaScript Shell C#
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
560 3
|
8月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】共享利用Python脚本解决Oracle的SQL脚本@@用法
本文来自YashanDB官网,介绍如何处理Oracle客户端sql*plus中使用@@调用同级目录SQL脚本的场景。崖山数据库23.2.x.100已支持@@用法,但旧版本可通过Python脚本批量重写SQL文件,将@@替换为绝对路径。文章通过Oracle示例展示了具体用法,并提供Python脚本实现自动化处理,最后调整批处理脚本以适配YashanDB运行环境。
|
11月前
|
C#
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件
210 9
|
11月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
12月前
|
安全 Java C#
Unreal Engine C# 脚本编写浅谈
本文介绍了在 Unreal Engine 中使用 C# 编写脚本的方法,涵盖环境搭建、基础概念、常见问题及代码案例。从安装插件到处理输入事件和加载蓝图,详细讲解了如何在 Unreal Engine 中高效利用 C# 进行开发。
359 3