场景

Winform中连接Mysql8并查询表中数据进行显示:

Winform中连接Mysql8并查询表中数据进行显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客

在上面实现连接Mysql8的基础上,怎样借助于mysqldump实现数据备份。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi 
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、继续上面的winform的布局,设计布局如下

2、获取需要的参数

通过TextBox来获取备份单表的按钮的表名输入,通过Button"选择备份文件路径"以及后面的TextBox来选择要进行备份的路径。

其中选择备份文件的路径的点击事件为

        private void button_select_path_Click(object sender, EventArgs e){FolderBrowserDialog path = new FolderBrowserDialog();path.ShowDialog();this.textBox_bak_path.Text = path.SelectedPath;}

然后通过一个TextBox来获取本机(即需要运行Winform的机器)的mysqldump.exe的路径,记得要带双引号。

3、实现单表的备份

然后再备份单表的按钮的点击事件中

        private void button4_Click(object sender, EventArgs e){PassForm passForm = new PassForm();passForm.ShowDialog();//密码验证通过if (passForm.DialogResult == DialogResult.OK){string mysqlDumpPath = this.text_mysqldump_path.Text.Trim();string tableName = this.text_one_table.Text.Trim();if (String.IsNullOrEmpty(tableName)){MessageBox.Show("表名不能为空!!!");}else if (String.IsNullOrEmpty(mysqlDumpPath)){MessageBox.Show("mysqldump的路径不能为空!!!");}else{string cmdStr = mysqlDumpPath + " -h " + this.host.Text.Trim() + " -u" + this.username.Text.Trim() + " -p" + this.password.Text.Trim() + " " + this.database.Text.Trim() + " " + this.text_one_table.Text.Trim() + " > " + "\"" + this.textBox_bak_path.Text.Trim() + "\\" + "bus_area.sql\"";CmdHelper.ExeCommand(cmdStr);}}else{MessageBox.Show("密码不正确");}}

这里首先加了一个密码验证的逻辑,防止误操作乱点按钮,通过后,获取到表名和mysqldump的路径然后进行拼接成cmdStr,

在拼接之后需要打断点到这步获取完整的cmd命令,然后再cmd中先手动执行一下试试。

这里在执行cmd时调用了一个帮助类CmdHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace mysqldatabak
{using System;using System.Collections.Generic;using System.Text;using System.Diagnostics;namespace Helper{/// <summary>/// 执行命令/// </summary>public class CmdHelper{////// 执行cmd.exe命令//////命令文本/// 命令输出文本public static string ExeCommand(string commandText){return ExeCommand(new string[] { commandText });}////// 执行多条cmd.exe命令//////命令文本数组/// 命令输出文本public static string ExeCommand(string[] commandTexts){Process p = new Process();p.StartInfo.FileName = "cmd.exe";p.StartInfo.UseShellExecute = false;p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardOutput = true;p.StartInfo.RedirectStandardError = true;p.StartInfo.CreateNoWindow = true;string strOutput = null;try{p.Start();foreach (string item in commandTexts){p.StandardInput.WriteLine(item);}p.StandardInput.WriteLine("exit");strOutput = p.StandardOutput.ReadToEnd();//strOutput = Encoding.UTF8.GetString(Encoding.Default.GetBytes(strOutput));p.WaitForExit();p.Close();}catch (Exception e){strOutput = e.Message;}return strOutput;}////// 启动外部Windows应用程序,隐藏程序界面//////应用程序路径名称/// true表示成功,false表示失败public static bool StartApp(string appName){return StartApp(appName, ProcessWindowStyle.Hidden);}////// 启动外部应用程序//////应用程序路径名称///进程窗口模式/// true表示成功,false表示失败public static bool StartApp(string appName, ProcessWindowStyle style){return StartApp(appName, null, style);}////// 启动外部应用程序,隐藏程序界面//////应用程序路径名称///启动参数/// true表示成功,false表示失败public static bool StartApp(string appName, string arguments){return StartApp(appName, arguments, ProcessWindowStyle.Hidden);}////// 启动外部应用程序//////应用程序路径名称///启动参数///进程窗口模式/// true表示成功,false表示失败public static bool StartApp(string appName, string arguments, ProcessWindowStyle style){bool blnRst = false;Process p = new Process();p.StartInfo.FileName = appName;//exe,bat and so onp.StartInfo.WindowStyle = style;p.StartInfo.Arguments = arguments;try{p.Start();p.WaitForExit();p.Close();blnRst = true;}catch{}return blnRst;}}}
}

3、测试单表效果

在建立连接成功并配置各项参数后,点击备份单表

验证通过后到指定路径下查看结果

4、备份所有表实现

在备份所有表的点击事件中

        private void button_bak_all_Click(object sender, EventArgs e){PassForm passForm = new PassForm();passForm.ShowDialog();if (passForm.DialogResult == DialogResult.OK){DataTable tbName = mySqlConnection.GetSchema("Tables");if (tbName.Columns.Contains("TABLE_NAME")){foreach (DataRow dr in tbName.Rows){string mysqlDumpPath = this.text_mysqldump_path.Text.Trim();string tableName = (string)dr["TABLE_NAME"];string cmdStr = mysqlDumpPath + " -h " + this.host.Text.Trim() + " -u" + this.username.Text.Trim() + " -p" + this.password.Text.Trim() + " " + this.database.Text.Trim() + " " + tableName + " > " + "\"" + this.textBox_bak_path.Text.Trim() + "\\" + tableName + ".sql\"";CmdHelper.ExeCommand(cmdStr);this.log_text.AppendText((string)dr["TABLE_NAME"] + "--备份完成");this.log_text.AppendText("\r\n");}}}else{MessageBox.Show("密码不正确");}}

逻辑是获取所有的表名然后循环拼接表名进行导出sql

效果

Winform中实现连接Mysql8使用mysqldump实现备份表的数据相关推荐

  1. Winform中实现连接Mysql并获取所有表名

    场景 Winform中连接Mysql8并查询表中数据进行显示: Winform中连接Mysql8并查询表中数据进行显示_BADAO_LIUMANG_QIZHI的博客-CSDN博客 在上面实现连接Mys ...

  2. php 清除数据表中所有数据库,清除一个数据库里所有表的数据

    如果需要清除一个数据库里所有表的数据,则可用下面命令: exec sp_MSforeachtable TRUNCATE TABLE ? ******************************** ...

  3. winform能连MySQL吗_c# winform中怎么连接mysql

    匿名用户 1级 2018-11-19 回答 static string myConnstr = "server=ip;user id=root; password=passwd;databa ...

  4. Winform中实现ZedGraph滚轮缩放后自动重新加载数据

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  5. sql多表连接update,通过其他的表的数据update某张表的方法

    这是我之前写过的一个sql语句 update tbl_safety_target t set zj = tbs.content from (SELECT t.id ,t.unicode , t_xzj ...

  6. 【Python爬虫系列教程 11-100】Python网络爬虫实战:最简单的Pandas 中的read_html一行代码爬取网页表格型数据,就可以爬取虎扑体育NBA球员信息

    文章目录 爬取对象 分析 实现代码 爬取对象 虎扑是一个认真而有趣的社区,每天有众多JRs在虎扑分享自己对篮球.足球.游戏电竞.运动装备.影视.汽车.数码.情感等一切人和事的见解,热闹.真实.有温度. ...

  7. Winform中使用mysqldump实现选择部分表定期备份mysql数据库

    场景 Winform中实现与Mysql8建立连接并获取所有的表,然后勾选指定的表,定时进行数据库备份导出为sql文件.并且可以设定覆盖备份的次数,比如设置为7,则备份到第8次时就会将第一次备份的sql ...

  8. SQL中的连接(左、右、内连接)

    目录 左连接(LEFT JOIN或LEFT OUTER JOIN): 右连接(RIGHT JOIN或RIGHT OUTER JOIN): 内连接(INNER JOIN也叫等值连接): 全连接(FULL ...

  9. 解析SQL中内连接、外连接、完全连接、笛卡尔积关系

    在SQL新手菜鸟开发中,最多运用的就是多表查询,熟悉掌握该运用哪种查询时,可以大大减轻开发时间.下面为大家解释这四种关联关系: 两个表:分别是表A和表B 实例表 1.内连接:只返回满足条件的数据 I ...

最新文章

  1. 如何使用 Cockpit 管理你的树莓派
  2. 洛谷 P2015 二叉苹果树
  3. NYOJ 641 摧毁网络
  4. nand ubi - 5 kernel和ubi
  5. [react] react多个setState调用的原理是什么?
  6. 小弟带你走进VUE中input最大值设置出现的问题以及黑科技解决方案
  7. web网页版流程图插件-myflow.js-案例demo下载
  8. Windows学习总结(11)——Windows批处理命令编写代码及小程序简介
  9. c++ 封装的zookeeper库
  10. 21天学通JAVA:类的定义和对象的创建
  11. 在sqlserver sql语句中查找速度快
  12. canvas特效收集
  13. 【安全资讯】关键信息基础设施安全保护条例,自2021年9月1日起施行
  14. PHP获取某一天前后任意时间
  15. stm32调试内存越界情况
  16. pdf.js在线查看(文档流/地址)
  17. Educoder 机器学习 第1关:基于贝叶斯决策理论的分类方法
  18. 在 npm 发布中文 API 初体验——中国历代纪元
  19. 梦之印记——记雅礼中学第二期数学魔术进校园活动
  20. 机器学习——循环神经网络(RNN)

热门文章

  1. Matlab 进行离散时间信号序列的生成
  2. linux——yum的搭建说明
  3. GET和POST两种基本请求方法的区别(截取自https://www.cnblogs.com/logsharing/p/8448446.html)
  4. Oracle 获取字符的位置并截取字符串
  5. 项目管理:五大过程组十大领域
  6. Consul 服务注册中心
  7. vs2010 中文问题
  8. 揭露男生的真实心理年龄测试软件,心理年龄测试
  9. ssm插入数据时候栈溢出_程序员算法与数据结构基础中的基础,栈与递归
  10. word2vec实例详解python_Python实现word2Vec model过程解析