C# 调用 *.sql 文件

源: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");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

next按钮源码android,Android Edittext 软键盘输入法回车键改成下一步Next

软件盘中回车键默认功能是换行&#xff0c;但是有时候我们在Edittext中输完内容后点回车想要把焦点切到下一个Edittext继续输入&#xff0c;比如常见的登录页面&#xff0c;在输完用户名后&#xff0c;点回车调到输入密码输入框继续输入。示例代码代码很简单&#xff0c;如下所…

获取周的日期范围

/*** 获取周的日期范围* param string $week* param string $year* return array*/ public static function getWeekDate($week ,$year ) {/*** 2007年 第一周 是 01-01 到 01 - 07 因为第一天就是星期一 6* 2008年 第一周 是 01-01 到 01 - 06 因为第一天就是星期二 5 (闰年…

SQL SERVER 2005 T_SQL新的特性以及解决并发

一.修改语句的增强UPDATE test SET tname.WRITE(one hundred and two, 9, 3) WHERE tid 102在2005中增强了update方法&#xff0c;这是修改test表的列tname WRITE方法是把tname这个列中从字符串9开始 把3个长的字符串改为one hundred and two二、异常的捕获可以捕获过去会导致…

f5+big+client+android,F5负载均衡 MIBs bigip oid

F5 MIBs分组bigip-ltmpool-statoid".1.3.6.1.4.1.3375.2.2.5.2.3.1.1" name"ltmPoolStatName" smi-type"string"oid".1.3.6.1.4.1.3375.2.2.5.2.3.1.2" name"lPSServerPktsIn" smi-type"Counter"oid".1.3.6.…

Firefox: Connection Interrupted | The connection to the server was reset while the page was loading

http://blog.tangcs.com/2008/11/28/firefox-connection-interrupted/转载于:https://www.cnblogs.com/WarrenTang/archive/2008/11/28/1343580.html

用dw(dreamweaver)开发asp.net,连接数据库时出现“http错误500,服务器内部错误”的解决方法...

前几天在用dreamweaver开发asp.net时&#xff0c;需要用到datagrid&#xff0c;但是在用dw的“应用程序/数据库”面板进行数据库连接时&#xff0c;老是弹出对话框&#xff1a;“http错误500&#xff0c;服务器内部错误”&#xff0c;无法连接数据库&#xff0c;搞了几天都没有…

android跑分和ios,手机:苹果VS安卓 跑分不代表手机流畅度

原标题&#xff1a;手机&#xff1a;苹果VS安卓 跑分不代表手机流畅度在当前的国内手机市场中&#xff0c;有两个阵营&#xff1a;安卓和苹果。 安卓系统仍然是使用最多的系统。从最初的128M内存到当前的十多GB内存&#xff0c;安卓手机已得到迅速发展和更新。但总体而言&#…

【转载】给程序员的圣诞大礼★★春夏

计算机寓言之春真爱与新生 1 两名学生 曾经有一名学生&#xff0c;他在课余时间里穿上古时侯的盔甲&#xff0c;随后他如今那些和他有类似想法的人在一起&#xff0c;模仿古代社会里的贵州和太太们。 另一名学生是计算机科学专业的&#xff0c;他问一名学生为什么要穿着奇装异服…

html5 打开网页自动全屏,HTML5实现浏览器播放全屏模式!

先写点css样式&#xff1a;*{margin:0;padding:0}.btn1{position:absolute;right:0;bottom:0;z-index:23;}.div1{position:relative;z-index:1;width:423px;height:230px;}这是全屏的封装函数&#xff1a;function aaa(element){if(element.requestFullscreen){element.reque…

Proxy(Chapter 22 of Pro Objective-C Design Patterns for iOS)

You’d naturally think about using the pattern when? You need a remote proxy that provides a local representative for an object in a different address space or in the network.? You need a virtual proxy to create heavy-weighted objects on demand. We will …

余宏德:Sun所有的核心技术都是开放的

3月30日上午&#xff0c;“Sun 2007年媒体论坛”在香港举办。时值Sun公司成立25周年&#xff0c;因此本次活动备受大家关注。Sun公司大中华区管理层和技术专家与40家左右的媒体记者进行了面对面的讨论。本次活动的主题是“创新共享成长&#xff0d;为社会进步而创新”&#xff…

html打开自动点击,如何把一段JS点击触发改为页面打开后就自动触发?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1、最简单的调用方式直接写到html的body标签里面&#xff0c;如&#xff1a;2、在JS语句调用function func(){……}window.οnlοadfunc;3、同时 调用多个函数直接写到html的body标签里面,如&#xff1a;4、js调用多个函数,以下这种…

图示/白话 execve执行流程

转载于:https://www.cnblogs.com/image-eye/archive/2011/07/13/2105411.html

转pbr随笔

光的基本传递模型]1 在一个要渲染的场景中&#xff0c;我们认为光能由预先指定的光源发出&#xff0c;然后我们以光线来描述光能的传递过程&#xff0c;当整个场景中的光能信息被我们计算出来后&#xff0c;我们收集这些信息转化为顶点的亮度。2 光线经过物体表面可以产生反射和…

易企秀手机html5场景源码,【VIP源码】六月1日最新完美版易企秀微信场景源码

[v_notice]下面演示图为哥亲测截图&#xff0c;仅供参考&#xff0c;在这里下载的源码100%和演示截图一致[/v_notice]修补的首页&#xff1a;前台用户后台界面&#xff1a;场景制作界面&#xff1a;转场特效页面&#xff1a;特效增加&#xff1a;设计模板&#xff1a;制作预览页…

老程序员的10个忠告(转)

[1]好好规划自己的路&#xff0c;不要跟着感觉走&#xff01;根据个人的理想决策安排&#xff0c;绝大部分人并不指望成为什么院士或教授&#xff0c;而是希望活得滋润一些&#xff0c;爽一些。那么&#xff0c;就需要慎重安排自己的轨迹。从哪个行业入手&#xff0c;逐渐对该行…

Effective C# 原则48:了解更多的工具和资源(译)

Effective C# 原则48&#xff1a;了解更多的工具和资源 Item 48: Learn About Tools and Resources 对于C#以及.Net来说这是激动人心的时候。这些工具目前还是比较新的&#xff0c;整个社区都在学习如何使用这些工具。一些资源可以帮助你提高你的知识&#xff0c;以及为.Net和…

计算机2013知识,【2013年计算机基础知识习题与答案(三)】- 环球网校

46.与十进制数128等值的二进制数是10000000.47.与十进制数217等值的二进制数是11011001.48.八进制数的基数为8&#xff0c;能用到的数字符号个数为8.49.十进制数38转换成八进制数是46.50.十进制数72转换成八进制数是110.51.与十进制数283等值的十六进制数是11B.52.与二进制数11…

上周回顾:艾妮闹春 Sun/HP高层人士震荡

进入4月&#xff0c;春暖花开。然而随着Vista首个漏洞“ANI”的到来&#xff0c;上周显然让许多人又紧张了一回。同样紧张的还有IT媒体的记者&#xff1a;周一一上班就传出Sun公司大中华区总裁余宏德和其他高管离职的消息&#xff0c;周五临下班HP中国总裁孙振耀又宣布“退休”…

计算机自带游戏如何删除,详细教你系统怎么删除游戏

很多时候&#xff0c;在我们安装系统就会自带一些游戏软件&#xff0c;但是我们不怎么感兴趣&#xff0c;放在那里有占用内存&#xff0c;只有将它们删除了&#xff0c;如何彻底删除windows系统自带的游戏蜘蛛纸牌呢&#xff1f;下面&#xff0c;就有系统之家小编来给大家讲解系…