C#通过读取Mysql脚本创建数据库
#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脚本创建数据库的更多相关文章
- oracle 脚本创建数据库的相关文章,教程,源码
学步园推荐专题: 关于oracle 脚本创建数据库的相关文章 文章标题 文章链接 文章简介 oracle命令行创建数据库的示例脚本 http://www.xuebuyuan.com/964527.ht ...
- sql server 脚本创建数据库邮件
sql server 脚本创建数据库邮件代码: --脚本创建数据库邮件 --1.开启数据库邮件 RECONFIGURE WITH OVERRIDE GO RECONFIGURE WITH OVERRI ...
- phpMyAdmin中mysql的创建数据库时的编码的问题
转载自新浪博客 Sean 一. mysql中utf8编码的utf8_bin,utf8_general_cs,utf8_general_ci的区别 utf8_general_ci 不区分大小写,这 ...
- C# 利用mysql.data 在mysql中创建数据库及数据表
C# 利用mysql.data 在mysql中创建数据库及数据表 using System; using System.Collections.Generic; using System.Linq; ...
- Oracle数据库安装以及使用脚本创建数据库授权
安装数据库 事实上Oracle安装 1.安装准备 Oracle的安装包下载以后是两个压缩包,同时选中两个压缩包右击进行解压 2.解压完成如下图所示 3.双击 setup.exe 文件进行安装,会弹出以 ...
- MySQL下创建数据库以及授权用户
一.新建数据库 1.首先登录MySQL:(输入 mysql -u root -p 命令,然后输入密码按回车即可) 2.在mysql> 下输入如下命令,回车,即可创建数据库 (test为数据库名) ...
- 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)
在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...
- mysql之创建数据库,创建数据表
写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的 ...
- 数据库入门(mySQL):创建数据库
基于JetBrains DataGrip创建数据库.SQL语句创建数据库 MySQL数据库存储引擎和数据类型 创建数据库表及基本操作 导出数据库.删除数据库.导入数据库 一.基于JetBrains D ...
随机推荐
- Kali-Dos洪水攻击之Hping3
在计算机行业,拒绝服务(DoS)或分布式拒绝服务(DDoS)攻击是指不法分子企图让某机器或网络资源无法被预期的用户所使用.虽然执行DoS攻击的方式.动机和目标不一样,但通常包括设法临时性或无限期中断或 ...
- 线段树 HDU-1754 I Hate It
附上原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某 ...
- SuperSocket基础二
SuperSocket基础(二)-----一个完整的SocketServer项目 由于时间关系未能及时更新,关于SuperSocket,对于初学者而言,一个SuperSock的Server真的不好写. ...
- struts2 在 Action 或 Interceptor 中获取 web.xml 中配置的 <context-param> 参数 (这是我的第一篇博文,哈哈。)
最近为了改一个问题,想加一个控制开关,就在web.xml 中配置了一个 <context-param> 参数,并在 Action 或 Interceptor 中获取参数值. 1.在 web ...
- RSA加解密算法以及密钥格式
RSA算法: 有个文章关于RSA原理讲的不错: https://blog.csdn.net/dbs1215/article/details/48953589 http://www.ruanyifeng ...
- Delphi的TService 服务路径获取 Dll中获取文件路径
研究delphi服务的路径,试了好几个方法 ,都没取出来,最后发现,要采用取DLL路径的方法 //一.获取Dll自身路径 //1)方法一: Function GetDllPath(sDllName:s ...
- 【题解】Luogu P2081 [NOI2012]迷失游乐园
原题传送门 这是当时冬令营课上讲的题,咕咕咕到了现在 如果这题没有环套树的话,就很套路了 需要两个数组up[i]和down[i],down[i]表示从i点第一步向下走的期望距离,up[i]表示从i点第 ...
- 翻译 | Placing Search in Context The Concept Revisited
翻译 | Placing Search in Context The Concept Revisited 原文 摘要 [1] Keyword-based search engines are in w ...
- 算法(第四版)C# 习题题解——1.4
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...
- SVN忽略不提交文件夹
eclipse提交经常要同步后再提交或更新,但是这时有很多不需要提交的文件.文件夹比较碍事,这时候就可以在svn上设置不需要关注的文件夹: 1.windows->preferences-> ...