使用asp.net进行Mysql数据库备份程序的知识准备

最近想在自己的程序中加上数据库的备份和恢复功能,但是没有现成的asp.net可以参考,就找了Mysql的帮助文件,挑出需要的几个必须的命令,总结如下:

 

一、Mysq导出Sql格式范例

/*

Navicat MySQL Data Transfer

Source Server : mysql
Source Server Version : 50508
Source Host : localhost:3306
Source Database : schoolnet

Target Server Type : MYSQL
Target Server Version : 50508
File Encoding : 65001

Date: 2011-04-22 15:14:00

*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `bk_attach`
-- ----------------------------

DROP TABLE IF EXISTS `bk_attach`;

-- ----------------------------
-- Table structure for `b_course`
-- ----------------------------
DROP TABLE IF EXISTS `b_course`;
CREATE TABLE `b_course` (
`CourseId` int(11) NOT NULL AUTO_INCREMENT,
`CourseName` varchar(8) DEFAULT NULL,
PRIMARY KEY (`CourseId`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=gb2312;

-- ----------------------------
-- Records of b_course
-- ----------------------------
INSERT INTO b_course VALUES ('1', '语文');
INSERT INTO b_course VALUES ('2', '数学');
INSERT INTO b_course VALUES ('3', '英语');
INSERT INTO b_course VALUES ('4', '物理');
INSERT INTO b_course VALUES ('5', '化学');
INSERT INTO b_course VALUES ('6', '生物');
INSERT INTO b_course VALUES ('7', '政治');
INSERT INTO b_course VALUES ('8', '历史');
INSERT INTO b_course VALUES ('9', '地理');
INSERT INTO b_course VALUES ('10', '音乐');
INSERT INTO b_course VALUES ('11', '体育');
INSERT INTO b_course VALUES ('12', '美术');


二、获取数据库的sql

命令:SHOW CREATE DATABASE schoolnet

生成数据表:

Database

Create Database

schoolnet

CREATE DATABASE `schoolnet` /*!40100 DEFAULT CHARACTER SET gb2312 */

三、获取数据列表

    命令:SHOW CREATE DATABASE

 

获取数据库中的数据表和视图名

 

命令:show TABLE STATUS 可以区分表还是视图区别在于Comment字段是否包含字符“view”

 

显示表列表:show TABLE  STATUS where COMMENT not like '%View%'

Name

…..

Comment

a

 

 

b

 

view

 注:因为视图大都需要数据表为基础,所以备份时也需要注意先备份数据表后备份视图,否则在恢复数据的时候会产生错误

  另外在获取的“creat table**”的语句中可能包含回车换行符,在备份和恢复的时候必须单独处理,一般在备份的时候就进行 Replace(tmp_insert, Chr(13) & Chr(10), "\r\n")的替换

记录中可能包含回车换行符,此时问了语句的合法性,必须先进行替换(同上),在数据恢复的时候必须对这些数据进行还原,就是再把Replace(tmp_insert,"\r\n", Chr(13) & Chr(10))

 

附加:show TABLES

获取到数据库中所有表的名称

Tables_in_dbname

b_course

…….

 

 

 

五、 获取数据表的sql

 

 命令:SHOW CREATE TABLE b_course

生成如下表:

Table

Create Table

B_course

CREATE TABLE `b_course` (

  `CourseId` int(11) NOT NULL AUTO_INCREMENT,

  `CourseName` varchar(8) DEFAULT NULL,

  PRIMARY KEY (`CourseId`)

) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=gb2312


 

 

六、获取实际表的记录

根据获取的数据表,便利所有记录,生成插入语句,没验证这样的效率如何,可以考虑分卷

INSERT INTO bk_function VALUES ('1', '备课栏目管理', 'Admin', 'admin/ad_task.aspx');

在获取记录数据的时候还需要注意,字段值为“null”和逻辑字段 (转换为0和1) 的处理 

 

 七、恢复的思路

  1、连接数据库测试,不成功报错

  2、检查指定数据库是否存在,存在提示删除覆盖,不存在创建

  3、导入数据库结构

  4、导入数据库记录

 

注:

1、参考:Discuz中Mysql分卷备份源码注解 

2、网上有个asp.net+mysql数据库管理源代码,已经上传到资源,http://download.csdn.net/source/3302493

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码实现asp.net连接MySQL数据库: ``` using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using MySql.Data.MySqlClient; public class MySQLDBHelper { private static string connectionString = "server=localhost;user id=root;password=123456;database=test;Charset=utf8;"; public static DataTable ExecuteDataTable(string commandText, CommandType commandType, params MySqlParameter[] parameters) { using (MySqlConnection connection = new MySqlConnection(connectionString)) { using (MySqlCommand command = new MySqlCommand(commandText, connection)) { command.CommandType = commandType; if (parameters != null) { command.Parameters.AddRange(parameters); } MySqlDataAdapter adapter = new MySqlDataAdapter(command); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); return dataTable; } } } public static int ExecuteNonQuery(string commandText, CommandType commandType, params MySqlParameter[] parameters) { using (MySqlConnection connection = new MySqlConnection(connectionString)) { using (MySqlCommand command = new MySqlCommand(commandText, connection)) { command.CommandType = commandType; if (parameters != null) { command.Parameters.AddRange(parameters); } connection.Open(); int result = command.ExecuteNonQuery(); return result; } } } } ``` 其中,MySQLDBHelper是一个帮助类,提供了两个静态方法,一个用于执行SELECT语句并返回DataTable,另一个用于执行INSERT/UPDATE/DELETE等操作并返回受影响的行数。需要将connectionString变量替换为自己的MySQL连接字符串。使用示例: ``` MySqlParameter[] parameters = new MySqlParameter[] { new MySqlParameter("@name", "张三"), new MySqlParameter("@age", 20) }; string sql = "INSERT INTO student (name, age) VALUES (@name, @age)"; int result = MySQLDBHelper.ExecuteNonQuery(sql, CommandType.Text, parameters); if (result > 0) { Response.Write("添加成功!"); } else { Response.Write("添加失败!"); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值