예제 #1
0
        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]);
                }
            }
        }
예제 #2
0
        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;
                }
            };
        }