#region script helper
private bool ExecuteScriptFile(string pathToScriptFile, out string errorMsg)
{
StreamReader reader = null;
DbConnection connection = null; string strSql;
string applicationPath = Request.ApplicationPath;
using (reader = new StreamReader(pathToScriptFile))
{
using (connection = new MySqlConnection(GetConnectionString()))
{
DbCommand dbCmd = connection.CreateCommand();
dbCmd.Connection = connection;
dbCmd.CommandType = CommandType.Text;
dbCmd.CommandTimeout = ; // 考虑到安装脚本可能比较大,将命令超时时间设为6分钟
connection.Open(); while (!reader.EndOfStream)
{
try
{
strSql = NextSqlFromStream(reader); if (!string.IsNullOrEmpty(strSql))
{
dbCmd.CommandText = strSql.Replace("$VirsualPath$", applicationPath);
dbCmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
} } connection.Close();
} reader.Close();
} errorMsg = null;
return true;
} private static string NextSqlFromStream(StreamReader reader)
{
StringBuilder sb = new StringBuilder();
string lineOfText = reader.ReadLine().Trim(); while (!reader.EndOfStream && string.Compare(lineOfText, "GO", true, CultureInfo.InvariantCulture) != )
{
sb.Append(lineOfText + Environment.NewLine);
lineOfText = reader.ReadLine();
} // 如果最后一句不是GO,添加最后一句
if (string.Compare(lineOfText, "GO", true, CultureInfo.InvariantCulture) != )
sb.Append(lineOfText + Environment.NewLine); return sb.ToString();
}
#endregion
        /// <summary>
/// 执行Sql文件
/// </summary>
/// <param name="varFileName">sql文件</param>
/// <param name="Conn">连接字符串</param>
/// <returns></returns>
private bool ExecuteSqlFile(string varFileName, String Conn)
{
using (StreamReader reader = new StreamReader(varFileName, System.Text.Encoding.GetEncoding("utf-8")))
{
MySqlCommand command;
MySqlConnection Connection = new MySqlConnection(Conn);
Connection.Open();
try
{
string line = "";
string l;
while (true)
{
// 如果line被使用,则设为空
if (line.EndsWith(";"))
line = ""; l = reader.ReadLine(); // 如果到了最后一行,则退出循环
if (l == null) break;
// 去除空格
l = l.TrimEnd();
// 如果是空行,则跳出循环
if (l == "") continue;
// 如果是注释,则跳出循环
if (l.StartsWith("--")) continue; // 行数加1
line += l;
// 如果不是完整的一条语句,则继续读取
if (!line.EndsWith(";")) continue;
if (line.StartsWith("/*!"))
{
continue;
} //执行当前行
command = new MySqlCommand(line, Connection);
command.ExecuteNonQuery();
}
}
finally
{
Connection.Close();
}
} return true;
}

以上两种方法通过测试都可以实现。

第一种:先整个读取mysql脚本,同时执行多个创建

第二种:通过循环,先导入一个表结构及数据后再导入另一个(一个一个获取)

C#通过读取Mysql脚本创建数据库的更多相关文章

  1. oracle 脚本创建数据库的相关文章,教程,源码

    学步园推荐专题: 关于oracle 脚本创建数据库的相关文章 文章标题 文章链接 文章简介 oracle命令行创建数据库的示例脚本 http://www.xuebuyuan.com/964527.ht ...

  2. sql server 脚本创建数据库邮件

    sql server 脚本创建数据库邮件代码: --脚本创建数据库邮件 --1.开启数据库邮件 RECONFIGURE WITH OVERRIDE GO RECONFIGURE WITH OVERRI ...

  3. phpMyAdmin中mysql的创建数据库时的编码的问题

    转载自新浪博客    Sean 一. mysql中utf8编码的utf8_bin,utf8_general_cs,utf8_general_ci的区别 utf8_general_ci 不区分大小写,这 ...

  4. C# 利用mysql.data 在mysql中创建数据库及数据表

    C# 利用mysql.data 在mysql中创建数据库及数据表 using System; using System.Collections.Generic; using System.Linq; ...

  5. Oracle数据库安装以及使用脚本创建数据库授权

    安装数据库 事实上Oracle安装 1.安装准备 Oracle的安装包下载以后是两个压缩包,同时选中两个压缩包右击进行解压 2.解压完成如下图所示 3.双击 setup.exe 文件进行安装,会弹出以 ...

  6. MySQL下创建数据库以及授权用户

    一.新建数据库 1.首先登录MySQL:(输入 mysql -u root -p 命令,然后输入密码按回车即可) 2.在mysql> 下输入如下命令,回车,即可创建数据库 (test为数据库名) ...

  7. 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)

    在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...

  8. mysql之创建数据库,创建数据表

    写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的 ...

  9. 数据库入门(mySQL):创建数据库

    基于JetBrains DataGrip创建数据库.SQL语句创建数据库 MySQL数据库存储引擎和数据类型 创建数据库表及基本操作 导出数据库.删除数据库.导入数据库 一.基于JetBrains D ...

随机推荐

  1. SQL- 行转列,多行转多列 - max 函数

    效果如图,把同一个 code, 按 cate 列相同行的进行合并后分两行,把mode 每种类型转换成 列名 ,主要用到了 max 函数,很实用 if exists(select * from temp ...

  2. winsock I/O模型的分析

    几种winsock I/O模型的分析 套接字是通信的基础,是支持网络协议数据通信的基本接口.Winsocket 提供了一些有趣的I/O模型,有助于应用程序通过一种“异步”方式,一次对一个或者多个套接字 ...

  3. eclipse 搭建maven项目

    最近重新搭建项目把日常用到的东西都记录一下. 创建maven项目(maven4.4以后都自带maven了)   1,创建一个Maven parent  主要是各个项目之间的依赖 使用eclipse 创 ...

  4. python 2 和 python 3 的区别

    p2:重复代码语言不统一不支持中文input() 输入数字 获取数字输入字符串必须自己手动写引号raw_input 和p3中的 input 一样print可以加括号 也可以不加括号p2 中除法获取到的 ...

  5. sys模块

    #python run_case.py #在terminal中执行.py文件 在terminal中执行.py文件: 注: 无法使用terminal来打开那个文件 会显示如下:python: can't ...

  6. 软件测试实验四----mujava变异测试

    1.整个路径结构 2.具体内容 2.1mujava的安装 2.1.1更改CLASSPATH环境变量,使命令行可以找到mujava的路径,方便之后mujava的使用. 2.1.2在系统某一路径下按照格式 ...

  7. Linux的DNS配置2-主从服务器

    1.实验背景 之前写了Linux的DNS配置1-DNS入门,其中只用了一台DNS服务器,但一般在大型网络中,都要通过配置辅助DNS服务器可以提高DNS服务的可靠性,本次实验即配置DNS主从服务器 2. ...

  8. WebStorm过期解决方法

    第一步:先删除C:\Users\本机用户名\.WebStorm2016.3\config文件中eval文件. 第二步:打开webstrom 如图,填写许可证激活码:http://idea.imsxm. ...

  9. 20180706001 - 动态添加 tabPage

    //        public TabPage Add(Form form, string str_frm_name)        {            form.Visible = true ...

  10. Linux 下 ls -l 命令执行显示结果的每一列含义【转载】

    转自:zhuoya_的博客 原文地址>>https://blog.csdn.net/zhuoya_/article/details/77418413