using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using Lskj.Util; using Lskj.Core; using MySql.Data.MySqlClient; using System.Threading; using System.Configuration; namespace AFKAbutment { public partial class FrmMain : DevExpress.XtraEditors.XtraForm { public FrmMain() { InitializeComponent(); this.Load += OnFrmMain_Load; this.startBtn.Click += OnstartBtn_Click; } #region 方法 #region 开始同步数据 /// /// 说明:开始同步数据. /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void StartAbutment() { DBConfig.Instance.ServerName = this.LsDataServerText.Text; DBConfig.Instance.DataBase = this.LsDataNameText.Text; if (DBConfig.Instance.CreateConnection()) { DataSet dataSet = SqlHelper.ExecuteDataSet("");//执行存储过程,获取表后循环比较并同步 } else { UpdateTextBox(this.resultInfoText, "数据库连接失败!\r\n"); } } #endregion #region 跨线程访问 /// /// 说明:跨线程访问. /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void UpdateTextBox(TextBox textBox, string textStr)//跨线程访问 { if (textBox.InvokeRequired) { // 当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它 Action actionDelegate = (x) => { textBox.AppendText(textStr); }; // 或者 // Action actionDelegate = delegate(string txt) { this.label2.Text = txt; }; textBox.Invoke(actionDelegate, textStr); } } #endregion #region 获取两个表的差集 /// /// 说明:获取两个表的差集. /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private DataRow[] GetExcept(DataTable firstTab, DataTable secondTab) { IEnumerable Except = firstTab.Select().AsEnumerable().Except(secondTab.Select().AsEnumerable(), DataRowComparer.Default); return Except.ToArray(); } #endregion #endregion #region 事件 #region 窗体加载时 /// /// 说明:窗体加载时. /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnFrmMain_Load(object sender, EventArgs e) { if (File.Exists("AFKInfo.ini")) { this.LsDataServerText.Text = IniHelper.Read("AFKInfo.ini", "LsDataServer"); this.LsDataNameText.Text = IniHelper.Read("AFKInfo.ini", "LsDataName"); } string connectStr = "Data Source=10.81.9.121;Port=3308;Database=avicare_access_erp;User ID=avicare_erp;Password=avicareerp@2021"; MySqlConnection cone = new MySqlConnection(connectStr); MySqlHelper._connection = cone;//连接中间表 } #endregion #region 同步按钮点击 /// /// 说明:同步按钮点击. /// 创建人:王一帆 /// 创建日期:2021-06-21 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// private void OnstartBtn_Click(object sender, EventArgs e) { if (!string.IsNullOrWhiteSpace(this.LsDataServerText.Text) && !string.IsNullOrWhiteSpace(this.LsDataNameText.Text)) { Thread thread = new Thread(StartAbutment);// 创建线程 thread.Start(); } else { this.resultInfoText.AppendText("数据库地址或数据库名不能为空!\r\n"); } } #endregion #endregion } }