#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. 统计Oracle一个表空间中各个segment占用的空间大小

    SQL语句参考以下: select owner,segment_name,segment_type,tablespace_name,sum(bytes)/1024/1024/1024 from dba ...

  2. bzoj2809 [Apio2012]dispatching(左偏树)

    [Apio2012]dispatching Description 在一个忍者的帮派里,一些忍者们被选中派遣给顾客,然后依据自己的工作获取报偿.在这个帮派里,有一名忍者被称之为 Master.除了 M ...

  3. Spring中的资源加载

    大家也都知道JDK的类加载器:BootStrap ClassLoader.ExtenSion ClassLoader.Application ClassLoader:也使用了双亲委派模型,主要是为了防 ...

  4. python3 短网址和数字的相互转换的代码

    下面内容是关于python3 短网址和数字的相互转换的内容. import mathimport decimal def convert_to_code(num): """ ...

  5. mysql,jdbc、连接池

    show processlist; select * from information_schema.processlist; Command: The type of command the thr ...

  6. java微信公众号支付示例

    开始之前,先准备好:appid.商家号.商户密匙. 工具类: MD5Util.java package com.yiexpress.core.utils.wechat; import java.sec ...

  7. 一款非常好用的 Windows 服务开发框架,开源项目Topshelf

    Topshelf是一个开发windows服务的比较好的框架之一,以下演示如何开发Topshelf服务. 1.首先打开你的vs.新建一个TopshelfStudy控制台程序,如下图所示: 这是我用vs2 ...

  8. ltp-ddt emmc_dd_rw

    emmc_dd_rw EMMC_M_FUNC_DD_RW_500M source "common.sh"; install_modules.sh "emmc"; ...

  9. 2个监听器+ dialog + replysubject + extends

    import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; import 'package:flutter ...

  10. Spark大型电商项目实战-及其改良(3) 分析sparkSQL语句的性能影响

    之前的运行数据被清除了,只能再运行一次,对比一下sparkSQL语句的影响 纯SQL的时间 对应时间表 th:first-child,.table-bordered tbody:first-child ...