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; / ...
随机推荐
- MySQL -2- 体系结构-多实例模块
0.在已创建mysql,port=3306的数据库前提下 需要删除/etc/.my.cnf再做以下操作 cp /etc/my.cnf /etc/my.cnf.3306 1.mkdir -p /u02/ ...
- Kettle的Kitchen和Span
Kitchen——工作(job)执行器 (命令行方式) -rep : Repository name 任务包所在存储名 -user : Repository username 执行人 ...
- [gym101981M][2018ICPC南京M题]Mediocre String Problem
题目链接 题目大意是问在$S$串中找区间$[i,j]$,在$T$串中找位置$k$,使得$S[i,j]$和$T[1,k]$可以组成回文串,并且$j-i+1>k$,求这样的三元组$(i,j,k)$的 ...
- CF 1141C Polycarp Restores Permutation
Description An array of integers p1,p2,…,pnp1,p2,…,pn is called a permutation if it contains each nu ...
- Nob常用命令
说明:此文件为常用的命令笔记 规则: .使用"[组名]"分组,如[linux] .使用"<标题一>"标示知识点,可用"<<二级 ...
- python里面列表函数的使用及注意
1.append 在末尾插入一个内容: a= [i for i in range(1,6)] print(a) a.append(100) print(a) 2.insert 指定位置插入内容 ins ...
- uoj218_火车管理
题意 \(n\)个位置,每个位置一个栈,三种操作,询问区间栈顶的和,区间入栈某个数,单点出栈某个数. 分析 用一个线段树来维护栈顶的和,区间(单点)更新和区间询问. 用一个主席树来维护每个位置最新一次 ...
- php获取某经纬度附近地点位置
最近在做小程序中 其中一个需求就是要到找出某个经纬度地点附近的位置 本质最终的目的就是确定以某个确定的经纬度地点,以某半径画圆形确定的4个点对应的经纬度 /** * [returnSquarePoin ...
- Property 'showModal' does no t exist on type 'JQuery<HTMLElement>'
在 TS 代码中使用 jQuery 等库时配合插件使用,但是插件的开发人员并没有为其扩展 jQuery 的类型定义,这是使用插件的方法必然会报 TS 的类型错误,这时候要快速选择忽略该报错的最直接的方 ...
- TS学习
随着vue3.0的即将到来,是时候学习一下TS了 简介:TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类 ...