源:http://zhidao.baidu.com/question/5367984.html?si=2

using System;
using System.Xml;
using System.Data;
using System.IO;
using System.Collections;
using System.Data.SqlClient;

namespace ExecuteSqlFile
{
/// <summary>
/// DBAccess 的摘要说明。
/// </summary>
public class DBAccess
{
public DBAccess()
{
}

#region 属性

private static string ConStr = "";

private static string ConString
{
get
{
if(ConStr == "")
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load("ServerConfig.xml");

string userid = doc.SelectSingleNode("ServerConfig/UserId").InnerText;
string password = doc.SelectSingleNode("ServerConfig/PassWord").InnerText;
string servername = doc.SelectSingleNode("ServerConfig/ServerName").InnerText;
string database = doc.SelectSingleNode("ServerConfig/DataBase").InnerText;
ConStr = "server = " + servername + ";uid = "
+ userid + ";pwd = " + password + ";database = " + database;
}
catch(Exception ex)
{
throw ex;
}
}

return ConStr;
}
}

private static SqlConnection Con;

public static SqlConnection MyConnection
{
get
{
if(Con == null)
{
Con = new SqlConnection(ConString);
}
return Con;
}
}

#endregion

/// <summary>
/// 执行Sql文件
/// </summary>
/// <param name="varFileName"></param>
/// <returns></returns>
public static bool ExecuteSqlFile(string varFileName)
{
if(!File.Exists(varFileName))
{
return false;
}

StreamReader sr = File.OpenText(varFileName);

ArrayList alSql = new ArrayList();

string commandText = "";

string varLine = "";

while(sr.Peek() > -1)
{
varLine = sr.ReadLine();
if(varLine == "")
{
continue;
}
if(varLine != "GO")
{
commandText += varLine;
commandText += "\r\n";
}
else
{
alSql.Add(commandText);
commandText = "";
}
}

sr.Close();

try
{
ExecuteCommand(alSql);
}
catch
{
return false;
}

return true;
}

private static void ExecuteCommand(ArrayList varSqlList)
{
MyConnection.Open();
SqlTransaction varTrans = MyConnection.BeginTransaction();

SqlCommand command = new SqlCommand();
command.Connection = MyConnection;
command.Transaction = varTrans;

try
{
foreach(string varcommandText in varSqlList)
{
command.CommandText = varcommandText;
command.ExecuteNonQuery();
}
varTrans.Commit();
}
catch(Exception ex)
{
varTrans.Rollback();
throw ex;
}
finally
{
MyConnection.Close();
}
}
}
}

配置文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<ServerConfig>
<ServerName>localhost</ServerName>
<DataBase>tttttt</DataBase>
<UserId>sa</UserId>
<PassWord>sa</PassWord>
</ServerConfig>
保存为ServerConfig.xml
放到Bin/Debug/里面

调用如下:
DBAccess.ExecuteSqlFile(@"E:\My Document\MySql\test1.sql");

C# 调用 *.sql 文件相关推荐

  1. 不附加数据库 ASP.NET调用.sql文件

    笔者好久没有写随笔了,这次是遇到提出这样的问题"不用附加数据库,什么修改web.config什么的那么麻烦,而是直接运行一个页面,然后根据向导一步一步引导用户安装生成数据库"那么这 ...

  2. Hive通过-f调用sql文件并进行传参

    有时候我们需要从Hive中获取需要的数据进行代码的编写,这就需要我们将查询到的语句输出到文档中,我们可以使用-e这个参数,例如: hive -e 'select * from area where c ...

  3. oracle存储过程调用sql文件,oracle存储过程的sql调用

    因为做项目的测试,所有需要不断的在数据库手工添加数据,这时候如果是批量的插入测试数据,很多情况下要用到存储过程. 如下,是Oracle数据库下一个简单的插入数据的存储过程: create or rep ...

  4. mysql和oracle 命令行执行sql文件 数据库执行sql文件 执行sql语句

    windows和linux操作相同 借鉴:http://www.361way.com/mysql-exec-sql-file/2646.html 方法一:mysql 调用法 操作方式如下: mysql ...

  5. VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件

    VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件 目录 问题探究 图文教程 问题探究 使用Visual Studio ...

  6. VB.net:使用Visual Studio 2010中的VB.net语言工具箱DataGridView调用SQL数据库Database的表格文件

    VB.net:使用Visual Studio 2010中的VB.net语言工具箱DataGridView调用SQL数据库Database的表格文件 目录 问题探究 图文教程 问题探究 使用Visual ...

  7. php调用sql数据库代码怎么写,PHP读取SQL文件并导入数据库(示例)

    /** * 读取 sql 文件并写入数据库 * @version 1.01 demo.php * @author xingshaocheng * @edit: www.jbxue.com */ cla ...

  8. docker 启动sqlserver_Docker mssql-server-linux:如何在构建期间启动.sql文件(来自Dockerfile)...

    我正在尝试使用MSSQL DB创建自己的Docker镜像以进行开发.它基于microsoft / mssql-server-linux映像.在构建期间,我想将一些.sql文件复制到容器中,然后运行这些 ...

  9. Java中使用mysqldump实现mysql数据库备份并将sql文件打成zip压缩包

    场景 在Java代码中调用mysqldump命令实现对指定的mysql数据库和指定的表导出为sql文件. 并将sql文件进行压缩成zip存储备份. mysqldump 简介 mysqldump 是 M ...

最新文章

  1. 一个类的实例是另一个类的属性python_Python中的类属性和实例属性引发的一个坑...
  2. python【蓝桥杯vip练习题库】ADV-279矩阵乘法
  3. node.js Web应用框架Express入门指南
  4. (精华)转:RDD:创建的几种方式(scala和java)
  5. pooled-jms_Hibernate隐藏的宝石:pooled-lo优化器
  6. Git理论、原理、操作
  7. 剑指 Offer 32 - II. 从上到下打印二叉树 II
  8. 随想录(人脸检测之dlib)
  9. Merge PDF - Split PDF(PDF合成)
  10. 阿里云技术专家入选Apache Member;百度Q1财报:营收241亿元;华为面向全球发布AI-Native数据库……...
  11. 读书笔记202208 TRC2010 Multi-agent model predictive control of signaling split in urban traffic networks
  12. 吃鸡 python开发_ 冲顶大会等游戏答题神器,提供答题辅助决策 ,帮助顺利吃鸡...
  13. LeetCode 3:Longest Substring Without Repeating Charact
  14. 交换机有哪几种端口类型
  15. 黑马SQL入门到精通笔记 —— 进阶篇
  16. 买游戏来运营_游戏化思维帮你玩转社群运营
  17. 如何发表期刊方法步骤
  18. YOLOv5实战中国交通标志识别(TT100K数据集)
  19. PMP的PDU是什么?有什么用?怎么免费获得?
  20. 新、改、扩建项目“三同时”安全管理制度

热门文章

  1. memlock mysql_mysql配置详解(不断更新)
  2. linux使用设备文件的目录,Linux系统下的/dev目录
  3. java 发送邮件昵称_利用JavaMail发送QQ邮件
  4. 课题开题报告范文样本_成都汽车职业技术学校举行 2020年省、市、区课题开题报告会...
  5. 【JAVA基础篇】集合框架
  6. lintcode循环数组之连续子数组求和
  7. Spring3 整合 Hibernate4实现数据库操作(1)
  8. matlab桥梁受力计算公式,matlab桥梁计算
  9. python数独游戏源代码100行_python实现自动解数独小程序
  10. C++面试常见问题一