Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.98 KB | None | 0 0
  1. private const string ConnectionString =
  2. "server=*****.**;Port=****;database=**;username=****;password=*****;pooling=false;";
  3.  
  4. private DataSet _localDatabaseCopy;
  5. private MySqlDataAdapter _myDataAdapter;
  6.  
  7. private void Form1_Load(object sender, System.EventArgs e)
  8. {
  9. InitializeLocalDatabaseCopy();
  10. InitializeDataGridView();
  11. dataGridView1.AllowUserToAddRows = false;
  12. }
  13.  
  14. /// <summary>
  15. /// Binds the DataGridView to the BindingSource and load the data from the database.
  16. /// </summary>
  17.  
  18. private void InitializeDataGridView()
  19. {
  20. DataTable dataTable = _localDatabaseCopy.Tables[Resources.WorkingDataDatabaseTableName];
  21. dataGridView1.DataSource = new BindingSource { DataSource = dataTable };
  22. dataGridView1.MultiSelect = true;
  23. dataTable.Columns[Resources.ColumnName_IDNr].AutoIncrement = true;
  24. dataTable.Columns[Resources.ColumnName_IDNr].AutoIncrementSeed = -1;
  25. dataTable.Columns[Resources.ColumnName_IDNr].AutoIncrementStep = -1;
  26.  
  27.  
  28. }
  29. /// <summary>
  30. /// Fills the _myDataAdapter DataAdapter with the workingData & approvedData DataTables and adds the 2 DataTables to the _localDatabaseCopy DataSet.
  31. /// </summary>
  32. private void InitializeLocalDatabaseCopy()
  33. {
  34. _localDatabaseCopy = new DataSet();
  35. DataTable workingData = new DataTable(Resources.WorkingDataDatabaseTableName);
  36. DataTable approvedData = new DataTable(Resources.ApprovedDataDatabaseTableName);
  37. using (MySqlConnection connection = new MySqlConnection(ConnectionString))
  38. {
  39. _myDataAdapter = new MySqlDataAdapter(string.Format("select * from {0}", Resources.WorkingDataDatabaseTableName), connection);
  40. _myDataAdapter.Fill(workingData);
  41. _myDataAdapter.SelectCommand.CommandText = string.Format("select * from {0}", Resources.ApprovedDataDatabaseTableName);
  42. _myDataAdapter.Fill(approvedData);
  43. }
  44.  
  45. _localDatabaseCopy.Tables.Add(workingData);
  46. _localDatabaseCopy.Tables.Add(approvedData);
  47. }
  48.  
  49.  
  50.  
  51. private void SaveChangesToDb(string tableName)
  52. {
  53. MySqlCommandBuilder builder = new MySqlCommandBuilder(_myDataAdapter);
  54.  
  55. _myDataAdapter.SelectCommand.CommandText = String.Format("select * from {0}", tableName);
  56. _myDataAdapter.UpdateCommand = builder.GetUpdateCommand();
  57. _myDataAdapter.DeleteCommand = builder.GetDeleteCommand();
  58. _myDataAdapter.InsertCommand = builder.GetInsertCommand();
  59.  
  60. DataTable deletedRecords = _localDatabaseCopy.Tables[tableName].GetChanges(DataRowState.Deleted);
  61. DataTable modifiedRecords = _localDatabaseCopy.Tables[tableName].GetChanges(DataRowState.Modified);
  62. DataTable addedRecords = _localDatabaseCopy.Tables[tableName].GetChanges(DataRowState.Added);
  63. try
  64. {
  65. if (deletedRecords != null)
  66. _myDataAdapter.Update(deletedRecords);
  67. if (modifiedRecords != null)
  68. _myDataAdapter.Update(modifiedRecords);
  69. if (addedRecords != null)
  70. _myDataAdapter.Update(addedRecords);
  71.  
  72. _localDatabaseCopy.AcceptChanges();
  73.  
  74. }
  75. catch (Exception exception)
  76. {
  77. MessageBox.Show(exception.Message);
  78. }
  79. finally
  80. {
  81. if (deletedRecords != null)
  82. deletedRecords.Dispose();
  83. if (modifiedRecords != null)
  84. modifiedRecords.Dispose();
  85. if (addedRecords != null)
  86. addedRecords.Dispose();
  87. }
  88.  
  89. }
  90.  
  91.  
  92.  
  93. private void btnSave_Click(object sender, EventArgs e)
  94. {
  95.  
  96. SaveChangesToDb(Resources.WorkingDataDatabaseTableName);
  97.  
  98. }
  99.  
  100.  
  101. private void DeleteDataRows(DataRow[] rowsToDelete, string tableIndex)
  102. {
  103. foreach (DataRow row in rowsToDelete)
  104. _localDatabaseCopy.Tables[tableIndex].Rows.Remove(row);
  105. }
  106.  
  107.  
  108. /// <summary>
  109. /// Transfers the approved DataRows from the DataTable/DataGridview to the Approved Table in the MySql Database
  110. /// </summary>
  111. /// <param name="sender"></param>
  112. /// <param name="e"></param>
  113. private void btnTransferApproved_Click(object sender, EventArgs e)
  114. {
  115. SetWaitingCursor();
  116.  
  117. TransferApprovedDataRows();
  118. DeleteTransferedRowsFromWorkingDataTable();
  119. SaveChangesToDb(Resources.WorkingDataDatabaseTableName);
  120.  
  121. SetDefaultCursor();
  122. }
  123.  
  124. private void DeleteTransferedRowsFromWorkingDataTable()
  125. {
  126. DataRow[] approvedRowsToDelete = _localDatabaseCopy.Tables[Resources.WorkingDataDatabaseTableName].Select("Approved = 1");
  127. DeleteDataRows(approvedRowsToDelete, Resources.WorkingDataDatabaseTableName);
  128.  
  129. }
  130.  
  131. private void TransferApprovedDataRows()
  132. {
  133. DataTable myTableCopy = _localDatabaseCopy.Tables[Resources.WorkingDataDatabaseTableName].Copy();
  134. DataRow[] approvedRows = myTableCopy.Select("Approved = 1");
  135.  
  136. // if there are no rows which have been approved, quit
  137. if (approvedRows.Any())
  138. {
  139. foreach (DataRow row in approvedRows)
  140. {
  141. // checking if the row which is to be approved already exists in the approved-table
  142. bool redundant = false;
  143. foreach (
  144. DataRow approvedRow in _localDatabaseCopy.Tables[Resources.ApprovedDataDatabaseTableName].Rows)
  145. redundant |= approvedRow[Resources.ColumnName_IDNr].ToString() ==
  146. row[Resources.ColumnName_IDNr].ToString();
  147.  
  148. if (!redundant)
  149. _localDatabaseCopy.Tables[Resources.ApprovedDataDatabaseTableName].Rows.Add(row.ItemArray);
  150. }
  151. // writing the changes back to the database, Approved Table
  152. SaveChangesToDb(Resources.ApprovedDataDatabaseTableName);
  153. }
  154.  
  155. if (!approvedRows.Any())
  156. return;
  157.  
  158.  
  159. }
  160.  
  161.  
  162. }
  163.  
  164. private void DeleteDataRows(DataRow[] rowsToDelete, string tableIndex)
  165. {
  166. foreach (DataRow row in rowsToDelete)
  167. row.Delete();
  168. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement