C# 利用*.SQL文件自动建库建表等的类
/// <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文件自动建库建表等的类的更多相关文章
- SQL Server建库-建表-建约束
----------------------------------------SQL Server建库-建表-建约束创建School数据库------------------------------ ...
- 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式
导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...
- 使用T-sql建库建表建约束
为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容 ...
- MySQL建库建表
一直使用SQL SERVER 数据库:最近项目使用MY SQL感觉还是有一点不适应.不过熟悉之后就会好很多. MY SQL 安装之后会有一个管理工具MySQL Workbench 感觉不太好用,数据库 ...
- 【ITOO 3】.NET 动态建库建表:实用EF框架提供的codeFirst实现动态建库
导读:在上篇博客中,介绍了使用SQL字符拼接的方式,实现动态建库建表的方法.这样做虽然也能够实现效果,但是,太麻烦,而且,如果改动表结构,字段的话,会对代码修改很多.但是EF给我们提供了一种代码先行的 ...
- 如何利用sql注入进行爆库
SQL注入能做什么 在<SQL注入基础>一文介绍了SQL注入的基本原理和实验方法,那接下来就要问一下,SQL注入到底能什么? 估计很多朋友会这样认为:利用SQL注入最多只能获取当前表中的所 ...
- mysql那些事(4)建库建表编码的选择
mysql建数据库或者建表的时候会遇到选择编码的问题,以前我们都是习惯性的选择utf8,但是在mysql在5.5.3版本后加了utf8mb4的编码,utf8mb4可以存4个字节Unicode,mb4就 ...
- Mysql建库建用户建表等常用命令
格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输 ...
- (笔记)Mysql实例:建库建表并插入数据1
drop database if exists school; // 如果存在school则删除create database school; // 建立库schooluse school; / ...
随机推荐
- 如何用item pipeline(管道)清洗数据
版权声明:本文为博主原创文章,转载请注明出处:如果博客中有错误之处抑或有可以改进的地方,欢迎在评论区留言. https://blog.csdn.net/f156207495/article/detai ...
- python变量的内存管理
python变量的内存管理 一.变量存在了哪里? 先让我们来看一段代码: height = 100 # 定义变量 # print(100) # print会自动帮你创建一个变量100,打印完之后,马上 ...
- Openresrt最佳案例
第1篇:Nginx介绍 Nginx是一个高性能的Web 服务器,同时是一个高效的反向代理服务器,它还是一个IMAP/POP3/SMTP 代理服务器. 由于Nginx采用的是事件驱动的架构,能够处理并发 ...
- wordpress后台编辑如何显示定义的`style.css`样式
wordpress后台编辑如何显示定义的style.css样式 由于公司官网采用wordpress进行搭建,但是却又自己设计页面,无奈主题只能自行构建了,直接修改wordpress自带的主题进行修改. ...
- RabbitMQ入门教程(二):简介和基本概念
原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
- php获取某经纬度附近地点位置
最近在做小程序中 其中一个需求就是要到找出某个经纬度地点附近的位置 本质最终的目的就是确定以某个确定的经纬度地点,以某半径画圆形确定的4个点对应的经纬度 /** * [returnSquarePoin ...
- 剑指offer 剪绳子
题目描述 给你一根长度为n的绳子,请把绳子剪成m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1]x...xk[m]可能 ...
- 使用Lombok来优雅的编码
介绍在项目中使用Lombok可以减少很多重复代码的书写.比如说getter/setter/toString等方法的编写. IDEA中的安装打开IDEA的Setting –> 选择Plugins选 ...
- Java RMI 最简单实例
IHello.java import java.rmi.Remote; import java.rmi.RemoteException; public interface IHello extends ...
- zabbix 添加图行树
1.安装graphtree cd /usr/share/zabbix wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/ ...