#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学习基础 => 创建表

    --创建表 CREATE TABLE userinfo3 ( ID INT PRIMARY KEY NOT NULL, --ID 整数类型,设置为主键,并且不能为空 name ) NOT NULL, ...

  2. django 后端反向生成url

    导入模块 from django.core.urlresolvers import reverse reverse() reverse(viewname, urlconf=None, args=Non ...

  3. 阿里云 SSL 证书 总结

    历时2天左右的证书上传部署,终于结束了! 因为公司要开发小程序,小程序部署到开发环境必须支持https证书行. 阿里云目前的证书还是比较多的额,大致分为2类,一类是支持单域名,一类是支持泛域名. 自己 ...

  4. C#通过Ado.net对连接数据库并进行添加删除等常规操作的代码

    如下资料是关于C#通过Ado.net对连接数据库并进行添加删除等常规操作的内容. static string sqlcon = "server=.;database=;Integrated ...

  5. v-charts简介

    一, v-charts简介 在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化.修改复杂的配置项,v-charts 的出现正是为了解决这个痛点.基于 Vue2.0 和 echarts 封 ...

  6. Vagrant Box下载缓慢解决方法

    box 搜索页面:https://atlas.hashicorp.com/boxes/search example:homestead 1,选中box和版本,先根据提示安装 2,获取box下载地址,采 ...

  7. webview 监听及获取cookie

    https://www.cnblogs.com/pjl43/p/9866753.html https://www.jianshu.com/p/55092eb06c17 requests: https: ...

  8. WARN PageNotFound:208 - Request method 'POST' not supported

    在地址栏输入网址访问页面 ,用的是GET方法. 在用ajax接收后台数据,根据返回值进行提示或页面跳转时报:WARN PageNotFound:208 - Request method 'POST' ...

  9. server.xml引入子文件配置(tomcat虚拟主机)

    在配置tomcat虚拟主机时候,如何每一个虚拟主机写成单独文件,server.xml包含这些子文件? 如以下<OneinStack>中,添加JAVA环境虚拟主机后tomcat配置文件详情: ...

  10. CF Round #551 (Div. 2) D

    CF Round #551 (Div. 2) D 链接 https://codeforces.com/contest/1153/problem/D 思路 不考虑赋值和贪心,考虑排名. 设\(dp_i\ ...