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; / ...
随机推荐
- 03: saltstack和ansible的区别和原理
1.1 SaltStack.Ansible.Puppet比较 1.SaltStack 1. saltStack由Python编写,为server-client模式的系统,自己本身支持多master. ...
- 根据ip获取地理信息.php
根据ip获取地理信息.php <?php function getIPLoc_sina($queryIP){ $url = 'http://int.dpool.sina.com.cn/iploo ...
- Codeforces893F_Subtree Minimum Query
题意 给定一棵树和根,每个点有点权,强制在线询问\(x\)子树里离\(x\)距离不超过\(k\)的最小点权. 分析 权值线段树合并的套路题,dfs,以深度作为下标,点权作为值,对每个点建立一颗权值线段 ...
- 常用的框架伪静态(Apache转Nginx)
EmpireCMS: rewrite ^([^\.]*)/listinfo-(.+?)-(.+?)\.html$ $/e/action/ListInfo/index.php?classid=$& ...
- 优雅的swiper实例
swiper实例 <!DOCTYPE html> <html lang="en"> <head> <meta name="vie ...
- vue引入jquery插件
在vue中使用jquery插件 1.引入jquery 第一种方法:全局引入jquery 在webpack.base.conf.js,新增以下代码 plugins: [ new webpack.opti ...
- easyui,获取tabs标签页内容,以及刷新datagrid
因为先点开tab页xxx查看表格,再点另一个tab页xxxx修改部分信息,再切换到tab页xxx,tab页xxx里的datagrid表格不会刷新,显示不了修改的信息(在此tab页按F5刷新可以解决,但 ...
- CNN实战篇-手把手教你利用开源数据进行图像识别(基于keras搭建)
我一直强调做深度学习,最好是结合实际的数据上手,参照理论,对知识的掌握才会更加全面.先了解原理,然后找一匹数据来验证,这样会不断加深对理论的理解. 欢迎留言与交流! 数据来源: cifar10 (其 ...
- Bootstrap 中文文档教程
Bootstrap 中文文档教程 Bootstrap 中文文档教程 全局样式和grid布局—Bootstrap中文使用指南 全局样式1.要求html5文档类型 Bootstrap使用的css属性和ht ...
- SP Flash Tool版本对应MTK处理器型号(SP Flash Tool 版本速查)
SP Flash Tool v3.1224.0.100 MT6516,MT6573,MT6573,MT6575,MT6575,MT6577, SP Flash Tool v3.1332.0.187 M ...