/// <summary>
/// 自动建库建表
/// </summary>
public class OperationSqlFile
{
SqlConnection sqlCon;
SqlCommand sqlCom;
String _varFileName = "";
String _conn = "";
String _database = "";
/// <summary>
/// 实例化 ExecuteSqlFile FileName:SQL文件路径 conn:连接数据源字符串 database:数据库名
/// </summary>
/// <param name="FileName">SQL文件路径</param>
/// <param name="conn">连接数据源字符串</param>
/// <param name="database">数据库名</param>
/// <returns></returns>
public OperationSqlFile(String FileName, String Fonn, String Satabase)
{
_varFileName = FileName;
_conn = Conn;
_database = Database;
}
/// <summary>
/// 开始执行
/// </summary>
public void Start()
{
ExecuteSql(_conn, _database, "create database " + _database);//建库
String Conn = _conn + ";Initial Catalog=" + _database;
ExecuteSqlFile(_varFileName, Conn);
}
/// <summary>
/// 执行Sql语句
/// </summary>
/// <param name="connString">连接字符串</param>
/// <param name="DatabaseName">数据库名</param>
/// <param name="sql">SQL语句</param>
/// <returns></returns>
private void ExecuteSql(string connString, string DatabaseName, string sql)
{
sqlCon = new SqlConnection(connString);
sqlCon.Open();
sqlCom = new SqlCommand(sql, sqlCon);
try
{
sqlCom.ExecuteNonQuery();
}
catch (Exception e)
{
}
finally
{
sqlCon.Close();
}
}
/// <summary>
/// 执行Sql文件
/// </summary>
/// <param name="varFileName"></param>
/// <param name="Conn"></param>
/// <returns></returns>
private bool ExecuteSqlFile(string varFileName, String Conn)
{
if (!File.Exists(varFileName))
{
return false;
}
StreamReader sr = File.OpenText(varFileName);
ArrayList alSql = new ArrayList();
string commandText = "";
string varLine = "";
while (sr.Peek() > -)
{
varLine = sr.ReadLine();
if (varLine == "")
{
continue;
}
if (varLine != "GO")
{
commandText += varLine;
commandText += "\r\n";
}
else
{
alSql.Add(commandText);
commandText = "";
}
}
sr.Close();
try
{
ExecuteCommand(alSql, Conn);
}
catch
{
return false;
}
return true;
}
private void ExecuteCommand(ArrayList varSqlList, String Conn)
{
sqlCon = new SqlConnection(Conn);
sqlCon.Open();
SqlTransaction varTrans = sqlCon.BeginTransaction();
sqlCom = new SqlCommand();
sqlCom.Connection = sqlCon;
sqlCom.Transaction = varTrans;
try
{
foreach (string varcommandText in varSqlList)
{
sqlCom.CommandText = varcommandText;
try
{
sqlCom.ExecuteNonQuery();
}
catch (Exception ex)
{
}
}
varTrans.Commit();
}
catch (Exception ex)
{ }
finally
{
sqlCon.Close();
}
}
}
执行
string FNADD = C:/mySql.sql;//SQL文件地址
String Conn = "Data Source=(local);Integrated Security=True";//连接数据库字符串
String DataB = "MyDATA";//要创建的数据库名
OperationSqlFile Ex = new OperationSqlFile(FNADD, Conn , DataB );
Ex.Start();

C# 利用*.SQL文件自动建库建表等的类的更多相关文章

  1. SQL Server建库-建表-建约束

    ----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...

  2. 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式

    导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...

  3. 使用T-sql建库建表建约束

    为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容 ...

  4. MySQL建库建表

    一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库 ...

  5. 【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库

    导读:在上篇博客中,介绍了使用SQL字符拼接的方式,实现动态建库建表的方法.这样做虽然也能够实现效果,但是,太麻烦,而且,如果改动表结构,字段的话,会对代码修改很多.但是EF给我们提供了一种代码先行的 ...

  6. 如何利用sql注入进行爆库

    SQL注入能做什么 在<SQL注入基础>一文介绍了SQL注入的基本原理和实验方法,那接下来就要问一下,SQL注入到底能什么? 估计很多朋友会这样认为:利用SQL注入最多只能获取当前表中的所 ...

  7. mysql那些事(4)建库建表编码的选择

    mysql建数据库或者建表的时候会遇到选择编码的问题,以前我们都是习惯性的选择utf8,但是在mysql在5.5.3版本后加了utf8mb4的编码,utf8mb4可以存4个字节Unicode,mb4就 ...

  8. Mysql建库建用户建表等常用命令

    格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输 ...

  9. (笔记)Mysql实例:建库建表并插入数据1

    drop database if exists school;  // 如果存在school则删除create database school;  // 建立库schooluse school;  / ...

随机推荐

  1. FTP服务器的搭建(CentOS 7)

    注意ip地址为: 虚拟机ip设置 TYPE="Ethernet"BOOTPROTO="static"NAME="enp0s3"DEVICE= ...

  2. Go语言中byte类型和rune类型(五)

    本篇内容本来准备在上一篇写的,想了想还是拆开写. go语言中字符串需要使用用双引号,而单引号用来表示单个的字符,字符也是组成字符串的元素.go语言的字符有两种: uint8类型,或者叫 byte 型, ...

  3. MySQL数据库主从同步实战过程

       Linux系统MySQL数据库主从同步实战过程 安装环境说明 系统环境: [root@~]# cat /etc/redhat-release CentOS release 6.5 (Final) ...

  4. LVS负载均衡常用的工作模式有NAT、DR、和TUN三种,其中DR模式性能最为优越,使用最为广泛。

    一.安装LVS LVS的编译安装参考本站文章:http://www.linuxe.cn/post-192.html,对于LVS这种功能性软件,在生产中用yum安装也是没有问题的. 1 yum inst ...

  5. RocketMQ 源码分析 —— Message 发送与接收

    1.概述 Producer 发送消息.主要是同步发送消息源码,涉及到 异步/Oneway发送消息,事务消息会跳过. Broker 接收消息.(存储消息在<RocketMQ 源码分析 —— Mes ...

  6. css 文本单行显示溢出时出现省略号 多行显示溢出时出现省略号 首行缩进

    一.文本单行显示溢出时出现省略号 二.文本多行显示溢出时出现省略号(这种样式只能在webkit和移动端使用,包括小程序,不能设置固定高度) 三.首行缩进两字符 text-indent: 2em; 四. ...

  7. vue.js(3)--v-bind与v-on

    vue中的v-bind与v-on的使用 (1)实例 <!DOCTYPE html> <html lang="en"> <head> <me ...

  8. vue history模式 ios微信分享坑

    vue history模式 ios微信分享坑 问题分析:因为苹果分享会是调取签名失败是因为:苹果在微信中浏览器机制和安卓不同,有IOS缓存问题,和IOS对单页面的优化问题,通俗点说安卓进行页面跳转分享 ...

  9. OpenCV笔记(I)

    这里记一下开始入手OpenCV碰到的一些问题以及解决办法.学习参考书是<OpenCV 4 计算机视觉项目实战(原书第2版)>,ISBN:978-7-111-63164-4. Ubuntu ...

  10. MINIUI grid学习笔记

    grid 控件a.事件的绑定和移除         grid.on("rowclick", fn); //绑定事件 (这个的话类似jquery的绑定事件)         grid ...