diff --git a/MainApp/MainApp/Controls/DataSet_Merge_Control.Designer.cs b/MainApp/MainApp/Controls/DataSet_Merge_Control.Designer.cs new file mode 100644 index 0000000..beb256d --- /dev/null +++ b/MainApp/MainApp/Controls/DataSet_Merge_Control.Designer.cs @@ -0,0 +1,95 @@ + +namespace MainApp.Controls +{ + partial class DataSet_Merge_Control + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마세요. + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.bottomGridView = new System.Windows.Forms.DataGridView(); + this.topGridView = new System.Windows.Forms.DataGridView(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bottomGridView)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.topGridView)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.bottomGridView, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.topGridView, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(371, 319); + this.tableLayoutPanel1.TabIndex = 1; + // + // bottomGridView + // + this.bottomGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.bottomGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.bottomGridView.Location = new System.Drawing.Point(3, 162); + this.bottomGridView.Name = "bottomGridView"; + this.bottomGridView.RowTemplate.Height = 23; + this.bottomGridView.Size = new System.Drawing.Size(365, 154); + this.bottomGridView.TabIndex = 4; + // + // topGridView + // + this.topGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.topGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.topGridView.Location = new System.Drawing.Point(3, 3); + this.topGridView.Name = "topGridView"; + this.topGridView.RowTemplate.Height = 23; + this.topGridView.Size = new System.Drawing.Size(365, 153); + this.topGridView.TabIndex = 3; + // + // DataSet_Merge_Control + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "DataSet_Merge_Control"; + this.Size = new System.Drawing.Size(371, 319); + this.tableLayoutPanel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.bottomGridView)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.topGridView)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.DataGridView bottomGridView; + private System.Windows.Forms.DataGridView topGridView; + } +} diff --git a/MainApp/MainApp/Controls/DataSet_Merge_Control.cs b/MainApp/MainApp/Controls/DataSet_Merge_Control.cs new file mode 100644 index 0000000..84b0f6b --- /dev/null +++ b/MainApp/MainApp/Controls/DataSet_Merge_Control.cs @@ -0,0 +1,67 @@ +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; + +namespace MainApp.Controls +{ + public partial class DataSet_Merge_Control : UserControl + { + public DataSet_Merge_Control() + { + InitializeComponent(); + + InitInstance(); + } + + private void InitInstance() + { + if (!AdoClient.Instance.SetConnection("peacecloud.synology.me,21433", "Study", "study", "Study123$")) + { + MessageBox.Show("Cannot access database."); + return; + } + + DoWork(); + } + + private void BindTableToGridView(DataGridView gridView, DataTable table) + { + gridView.SuspendLayout(); + gridView.DataSource = table; + gridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; + gridView.ResumeLayout(); + } + + private void DoWork() + { + DataSet dataSet_before = AdoClient.Instance.Query("SELECT * FROM EMPLOYEE"); + + Random rnd = new Random(); + int[] idxArr = new int[3] + { + rnd.Next(1000, 2000), + rnd.Next(1000, 2000), + rnd.Next(1000, 2000) + }; + + foreach (int idx in idxArr) + { + AdoClient.Instance.NonQuery($"INSERT INTO EMPLOYEE (ENO, ENAME, JOB, HIREDATE) VALUES ({idx}, 'e{idx}', 'processed', '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}')"); + } + + AdoClient.Instance.NonQuery($"DELETE FROM EMPLOYEE WHERE ENO = {idxArr[1]}"); + + DataSet dataSet_after = AdoClient.Instance.Query("SELECT * FROM EMPLOYEE"); + + dataSet_before.Merge(dataSet_after); // 동일한 구조의 테이블이라면 변경된 레코드 모두 반영됨 + + BindTableToGridView(topGridView, dataSet_before.Tables[0]); + BindTableToGridView(bottomGridView, dataSet_after.Tables[0]); + } + } +} diff --git a/MainApp/MainApp/Controls/DataSet_Merge_Control.resx b/MainApp/MainApp/Controls/DataSet_Merge_Control.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/MainApp/MainApp/Controls/DataSet_Merge_Control.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/MainApp/MainApp/MainApp.csproj b/MainApp/MainApp/MainApp.csproj index f9711e5..1f1c1b1 100644 --- a/MainApp/MainApp/MainApp.csproj +++ b/MainApp/MainApp/MainApp.csproj @@ -55,6 +55,12 @@ + + UserControl + + + DataSet_Merge_Control.cs + UserControl @@ -94,6 +100,9 @@ + + DataSet_Merge_Control.cs + Image_Insert_Select_Control.cs diff --git a/MainApp/MainApp/MainForm.cs b/MainApp/MainApp/MainForm.cs index b907523..a6b2638 100644 --- a/MainApp/MainApp/MainForm.cs +++ b/MainApp/MainApp/MainForm.cs @@ -46,7 +46,11 @@ namespace MainApp //control.Dock = DockStyle.Fill; //this.Controls.Add(control); - Image_Insert_Select_Control control = new Image_Insert_Select_Control(); + //Image_Insert_Select_Control control = new Image_Insert_Select_Control(); + //control.Dock = DockStyle.Fill; + //this.Controls.Add(control); + + DataSet_Merge_Control control = new DataSet_Merge_Control(); control.Dock = DockStyle.Fill; this.Controls.Add(control); }