PageRenderTime 23ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/MySqlBackup.NET/MySqlBackup/MySqlObjects/MySqlDatabase.cs

http://mysqlbackupnet.codeplex.com
C# | 97 lines | 82 code | 15 blank | 0 comment | 5 complexity | c33801341e3f72a4c9b5308797da1234 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Collections;
  5. using System.Data;
  6. namespace MySql.Data.MySqlClient
  7. {
  8. public class MySqlDatabase : IDisposable
  9. {
  10. string _name = "";
  11. string _createDatabaseSql = "";
  12. string _dropDatabaseSql = "";
  13. string _defaultCharSet = "";
  14. MySqlTableList _listTable = new MySqlTableList();
  15. MySqlProcedureList _listProcedure = new MySqlProcedureList();
  16. MySqlFunctionList _listFunction = new MySqlFunctionList();
  17. MySqlEventList _listEvent = new MySqlEventList();
  18. MySqlViewList _listView = new MySqlViewList();
  19. MySqlTriggerList _listTrigger = new MySqlTriggerList();
  20. public string Name { get { return _name; } }
  21. public string DefaultCharacterSet { get { return _defaultCharSet; } }
  22. public string CreateDatabaseSQL { get { return _createDatabaseSql; } }
  23. public string DropDatabaseSQL { get { return _dropDatabaseSql; } }
  24. public MySqlTableList Tables { get { return _listTable; } }
  25. public MySqlProcedureList Procedures { get { return _listProcedure; } }
  26. public MySqlEventList Events { get { return _listEvent; } }
  27. public MySqlViewList Views { get { return _listView; } }
  28. public MySqlFunctionList Functions { get { return _listFunction; } }
  29. public MySqlTriggerList Triggers { get { return _listTrigger; } }
  30. public delegate void getTotalRowsProgressChange(object sender, GetTotalRowsArgs e);
  31. public event getTotalRowsProgressChange GetTotalRowsProgressChanged;
  32. public long TotalRows
  33. {
  34. get
  35. {
  36. long t = 0;
  37. for (int i = 0; i < _listTable.Count; i++)
  38. {
  39. t = t + _listTable[i].TotalRows;
  40. }
  41. return t;
  42. }
  43. }
  44. public MySqlDatabase()
  45. { }
  46. public void GetDatabaseInfo(MySqlCommand cmd, bool getTotalRowsForEachTable)
  47. {
  48. _name = QueryExpress.ExecuteScalarStr(cmd, "SELECT DATABASE();");
  49. _defaultCharSet = QueryExpress.ExecuteScalarStr(cmd, "SHOW VARIABLES LIKE 'character_set_database';", 1);
  50. _createDatabaseSql = QueryExpress.ExecuteScalarStr(cmd, string.Format("SHOW CREATE DATABASE `{0}`;", _name), 1).Replace("CREATE DATABASE", "CREATE DATABASE IF NOT EXISTS") + ";";
  51. _dropDatabaseSql = string.Format("DROP DATABASE IF EXISTS `{0}`;", _name);
  52. _listTable = new MySqlTableList(cmd);
  53. _listProcedure = new MySqlProcedureList(cmd);
  54. _listFunction = new MySqlFunctionList(cmd);
  55. _listTrigger = new MySqlTriggerList(cmd);
  56. _listEvent = new MySqlEventList(cmd);
  57. _listView = new MySqlViewList(cmd);
  58. if (getTotalRowsForEachTable)
  59. GetTotalRows(cmd);
  60. }
  61. public void GetTotalRows(MySqlCommand cmd)
  62. {
  63. for (int i = 0; i < _listTable.Count; i++)
  64. {
  65. _listTable[i].GetTotalRows(cmd);
  66. if (GetTotalRowsProgressChanged != null)
  67. {
  68. GetTotalRowsProgressChanged(this, new GetTotalRowsArgs(_listTable.Count, i + 1));
  69. }
  70. }
  71. }
  72. public void Dispose()
  73. {
  74. _listTable.Dispose();
  75. _listProcedure.Dispose();
  76. _listFunction.Dispose();
  77. _listEvent.Dispose();
  78. _listTrigger.Dispose();
  79. _listView.Dispose();
  80. }
  81. }
  82. }