public void DownloadToExcel(entity.SetMaxPro setFunc, entity.UpdataPro updateFunc) { if (!ConnectToDB()) { MessageBox.Show("数据库连接失败, ErrCode = 1", "失败"); return; } List <string> tblNames = null; QueryAllTableNames(out tblNames); if (tblNames.Count == 0 || (tblNames.Count == 1 && tblNames[0] == LOCK_TABLE)) { MessageBox.Show("数据库:" + DATABASE + "没有任何表", "下载表"); return; } int totalCnt = tblNames.Count; if (tblNames.Contains(LOCK_TABLE)) { totalCnt--; } setFunc(totalCnt); //根据各个表名获取每个表的数据 for (int i = 0; i < tblNames.Count; i++) { if (tblNames[i] == LOCK_TABLE) { continue; } try { //查表数据 MySqlCommand cmd = new MySqlCommand(); cmd.Connection = conn; cmd.CommandText = "SELECT * FROM " + tblNames[i]; cmd.CommandType = CommandType.Text; MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); DataTable dt = new DataTable(); adapter.Fill(dt); adapter.Dispose(); //查表的字段信息 Dictionary <string, List <string> > columnInfo = new Dictionary <string, List <string> >(); cmd.CommandText = "SELECT COLUMN_NAME,COLUMN_TYPE,COLUMN_KEY,COLUMN_COMMENT,EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" + tblNames[i] + "' and TABLE_SCHEMA = '" + DATABASE + "'"; DbDataReader reader2 = cmd.ExecuteReader(); if (reader2.HasRows) { while (reader2.Read()) { List <string> detail = new List <string>(); detail.Add(reader2["COLUMN_TYPE"].ToString()); detail.Add(reader2["COLUMN_KEY"].ToString()); detail.Add(reader2["EXTRA"].ToString()); detail.Add(reader2["COLUMN_COMMENT"].ToString()); columnInfo.Add(reader2["COLUMN_NAME"].ToString(), detail); } reader2.Close(); } cmd.Dispose(); //写数据到Excel Excel.Instance.DataTabletoExcel(tblNames[i], dt, columnInfo); updateFunc(tblNames[i]); } catch (Exception err) { MessageBox.Show(err.Message, "下载表: " + tblNames[i]); } } }
private void mainLoad(object sender, EventArgs e) { //配置文件 bool exit = false; try { if (!System.IO.File.Exists("config.json")) { exit = true; MessageBox.Show("配置文件不存在", "加载config.json"); } else { entity.JsConfig jsConfig = util.Json.parse <entity.JsConfig>(System.IO.File.ReadAllText("config.json")); if (jsConfig.User == null || jsConfig.DbConfigs == null) { exit = true; MessageBox.Show("配置文件错误", "加载config.json"); } else { mysql.UserName = jsConfig.User.name; dbConfigs = jsConfig.DbConfigs; for (int i = 0; i < dbConfigs.Length; i++) { dbList.Items.Add(dbConfigs[i].desc); } dbList.SelectedIndex = -1; } } } catch (Exception err) { exit = true; MessageBox.Show(err.Message, "加载配置文件出错"); } if (exit || !checkUserName()) { System.Environment.Exit(0); return; } //进度设置 setFunc = (maxVal) => { showProgress.Value = 0; showProgress.Maximum = maxVal; }; updateFunc = (fileName) => { if (fileName == "") { showProgress.Value = 0; showProgress.Maximum = 0; updateLabel.Text = ""; } else { updateLabel.Text = fileName; showProgress.Value += 1; } }; }