C#通过代码配置运行mysql数据库(测试版本:mysql-8.0.15-winx64)

主要通过调用CMD配置mysql

分为三个核心步骤:

1.通过代码 在指定路径解压mysql文件(nuget 获取sharpzipXXX,跨卷拷贝要自己写递归文件拷贝),并将mysql的bin路径添加系统变量的path(可百度搜索C#如何添加环境变量)

2.代码创建数据库配置文件my.ini 要调用kernel.dll (可搜索如何通过C#创建ini文件)

3.重点讲调用cmd配置数据库 这部分花费时间较多

直接上代码:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace TestMysql
{
   public class CmdHelper
    {
        public void DealTheWholeCommand(string _CommandLine)
        {
            bool StandOutMark = false;
            bool StandErrorMark = false;
            //FunctionDetail.ShowInfo showinfo = new FunctionDetail.ShowInfo();
            Task task = new Task(() => {
                Process CmdProcess = new Process();
                //设置要启动的应用程序
                CmdProcess.StartInfo.FileName = "cmd.exe";
                //是否使用操作系统shell启动
                CmdProcess.StartInfo.UseShellExecute = false;
                // 接受来自调用程序的输入信息
                CmdProcess.StartInfo.RedirectStandardInput = true;
                //输出信息
                CmdProcess.StartInfo.RedirectStandardOutput = true;
                // 输出错误
                CmdProcess.StartInfo.RedirectStandardError = true;
                //不显示程序窗口
                CmdProcess.StartInfo.CreateNoWindow = true;
                //启动程序
                CmdProcess.Start();
              
                //向cmd窗口发送输入信息
                //p.StandardInput.WriteLine(CommandLine + "&exit");
                //获取输出信息
               
                Task taskForStandOut = new Task(()=> {
                    string ResultLine = string.Empty;
                    while (true)
                    {
                        Thread.Sleep(200);
                        ResultLine = CmdProcess.StandardOutput.ReadLine();
                        if (!string.IsNullOrEmpty(ResultLine))
                        {
                            Console.WriteLine(ResultLine);
                        }
                        
                        if (CmdProcess.StandardOutput.EndOfStream)
                        {
                            //Console.WriteLine("操作执行完成");
                            StandOutMark = true;
                            break;
                        }
                        
                    }
                });
                taskForStandOut.Start();

                Task taskForStandError = new Task(() => {
                    string ResultLine2 = string.Empty;
                    while (true)
                    {
                        Thread.Sleep(200);
                        ResultLine2 = CmdProcess.StandardError.ReadLine();
                        if (!string.IsNullOrEmpty(ResultLine2))
                        {
                            Console.WriteLine(ResultLine2);
                        }
                        
                        if (CmdProcess.StandardError.EndOfStream)
                        {
                            //Console.WriteLine("处理已完成");
                            StandErrorMark = true;
                            break;
                        }
                        
                    }
                });
                taskForStandError.Start();


                CmdProcess.StandardInput.WriteLine(_CommandLine + "&exit");
                CmdProcess.StandardInput.AutoFlush = true;
                while (true)
                {
                    if (StandErrorMark&&StandOutMark)
                    {
                        CmdProcess.WaitForExit();
                        CmdProcess.Close();
                        //Console.WriteLine("CMD已关闭");
                        CmdProcess = null;
                        break;
                    }
                    Thread.Sleep(500);
                }
            });
            task.Start();
            task.Wait();
        }
    }
}

上面是执行cmd配置数据库命令的核心代码。

 

调用的以及具体命令:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestMysql
{
    class Program
    {
        static void Main(string[] args)
        {
            CmdHelper cmdHelper = new CmdHelper();
            cmdHelper.DealTheWholeCommand("mysqld --install");
    
            cmdHelper.DealTheWholeCommand("mysqld --initialize-insecure --user=root --console");
            cmdHelper.DealTheWholeCommand("net start mysql");
            Console.ReadKey();
        }
    }
}

!!!可右键管理员权限运行也可以将C#项目设置成自动请求管理员权限 不然执行mysqld --install 以及net start mysql会提示权限问题

 

代码生成的my.ini内容如下:

 

[mysqld]
basedir="C:\WorkSpace\Testsetup\UfaceOffline\Mysql"
datadir="C:\WorkSpace\Testsetup\UfaceOffline\Mysql\data"
port=3306
server_id=10
character-set-server=gbk
character_set_filesystem=gbk
[client]
port=3306
default-character-set=gbk
[mysqld_safe]
timezone="CST"
[mysql]
default-character-set=utf8

测试系统为win10 ,测试前可先百度如何卸载mysql (由于是免安装版本 所以并未涉及注册表 卸载只需要卸载mysql服务 以及删除mysql根目录中的data文件夹即可)

!!!初始化语句中insecure会使得创建的mysql用户不包含密码 所以登录可不输入密码 直接回车 后期可通过连接数据库后执行

alter user user() identified by "123456" 修改密码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL Connector/Net 版本所需的 .Net Framework 版本 不同的版本 MySQL Connector/Net 所需的 .Net Framework 版本也是不同的: MySQL Connector/Net 6.9.12 需要 .Net Framework 4.0 或更高版本支持。(2018-04-30, General Availability) MySQL Connector/Ne 6.10.1 需要 .Net Framework 4.5.1 或更高版本支持。 MySQL Connector Net 6.10.2 到最新的 MySQL Connector Net 8.0.20 需要 .Net Framework 4.5.2 或更高版本MySQL Connector/NET 6.9.12 支持与 MySQL Server 8.0.3 以及之前版本MySQL Server连接。 从官方网站下载mysql-connector-net-8.20.0.msi安装之后,安装目录下的Assemblies中只有v4.5.2的MySql.Data.dll,也就是说它需要 v4.5.2 以上版本的 .Net Framework 支持。如果VS项目的目标框架是.NET Framework 4.5.2或更高版本,则引用正常;将项目的目标框架改为.NET Framework 4 再进行编译就会报错,提示“ 未能解析主引用“MySql.Data, Version=...... 该程序集是针对 .NETFramework,Version=v4.5.2 框架生成的......该框架版本高于当前目标框架 .NETFramework,Version=v4.0”。这表明这个 MySQL Connector/Net 的 MySql.Data.dll 需要 .Net Framework v4.5.2 的支持。 如果项目的目标框架是 .Net Framework v4.0 则最高只能使用 MySQL Connector/Net 6.9.12 的 MySql.Data.dll 。而需要注意的是 MySQL Connector/Net 6.9.12 的 MySql.Data.dll 是在2018-04-30发布的,官方文档显示支持与 MySQL Server 8.0.3 及之前的版本MySQL Server连接。 C#通过MySql.Data.dll连接MySql数据库 在项目中引用组件:MySql.Data.dll (记得复制到本地中选择为true / 或直接把MySql.Data.dll复制到debug文件夹下) 在代码中 using MySql.Data.MySqlClient; ......接下来这里就看你表演了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值