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; / ...
随机推荐
- windows如何使用bat快速安装计划任务?
关键词:windows定时任务,schtasks,at ,bat schtasks 部分转自: https://www.cnblogs.com/yumianhu/p/3710743.html at的详 ...
- JS中的 map, filter, some, every, forEach, for in, for of 用法总结和区别
JS中的 map, filter, some, every, forEach, for in, for of 用法总结和区别 :https://blog.csdn.net/hyupeng1006/a ...
- Oracle数据库跟踪存储过程
1.[右击]该存储过程 ——>勾选[添加调试信息]——>点击[测试]选项 2.输入对应参数,点击下图左上角红框按钮,开始跟踪,可逐语句逐过程跟踪
- Go语言中byte类型和rune类型(五)
本篇内容本来准备在上一篇写的,想了想还是拆开写. go语言中字符串需要使用用双引号,而单引号用来表示单个的字符,字符也是组成字符串的元素.go语言的字符有两种: uint8类型,或者叫 byte 型, ...
- windows 2008 创建域服务器问题 账户密码不符合要求
windows 2008新建域时,本地administrator账户将成域Administrator账户.无法新建域,因为本地administrator账户密码不符合要求.*解决办法:很多人都会想到在 ...
- 别人的Linux私房菜(24-25)X Window设置介绍、Linux内核编译与管理
X Window主要组件为:X Server .X Client . Window Manager . Display Manager. X Server管理硬件,X Client则为应用程序,将所需 ...
- Day2_数字类型_字符串类型_列表类型
数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...
- IDEA的快捷方式
一,IDEA的快捷方式1,F8单步执行 2,F9运行调试 3,CTRL +鼠标左键=进入查看定义 4,CTRL+alt +鼠标左键=查看实现 5,Shift+F6重命名 6,alt +intsert= ...
- asp.net运行原理及机制
当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模 ...
- Swoole开启守护进程后如何关闭
查找相应端口号对应的PID(以我的为例,我的是9501端口) netstat -apn | 清除这个进程 启动客户端这时就会报错连不上了,证明服务已关