From 7be4b4d2c06c98e303c487c321c7fd5305ac77ee Mon Sep 17 00:00:00 2001
From: adriancs
Date: Tue, 18 Oct 2022 21:41:33 +0800
Subject: [PATCH] v2.3.7
---
.../EventArgs/ExportCompleteArgs.cs | 14 +-
.../EventArgs/ImportCompleteArgs.cs | 38 ++---
.../EventArgs/ImportProgressArgs.cs | 12 +-
.../Methods/CryptoExpress.cs | 68 ++++-----
.../Methods/QueryExpress.cs | 38 ++---
.../MySqlBackup(Devart-Express).csproj | 30 +---
.../MySqlBackup.cs | 19 +--
.../MySqlScript/MySqlScript.cs | 2 +-
.../EventArgs/ExportCompleteArgs.cs | 14 +-
.../EventArgs/ImportCompleteArgs.cs | 38 ++---
.../EventArgs/ImportProgressArgs.cs | 12 +-
.../Methods/CryptoExpress.cs | 68 ++++-----
.../Methods/QueryExpress.cs | 41 +++---
.../MySqlBackup(MySql.Data).csproj | 23 +--
.../MySqlBackup.NET_debug_81_v1.zip | Bin 32127 -> 0 bytes
.../MySqlBackup(MySql.Data)/MySqlBackup.cs | 19 +--
.../EventArgs/ExportCompleteArgs.cs | 14 +-
.../EventArgs/ImportCompleteArgs.cs | 38 ++---
.../EventArgs/ImportProgressArgs.cs | 12 +-
.../Methods/CryptoExpress.cs | 68 ++++-----
.../Methods/QueryExpress.cs | 43 +++---
.../MySqlBackup(MySqlConnector).csproj | 23 +--
.../MySqlBackup.cs | 19 +--
.../MySqlScript/MySqlScript.cs | 2 +-
source code/MySqlBackup.sln | 20 +--
source code/README.md | 134 ++++++++++++++++++
source code/Test_ASPNET/Index.aspx | 13 +-
source code/Test_ASPNET/Index.aspx.cs | 4 +-
source code/Test_ASPNET/Test_ASP.NET.csproj | 37 ++---
source code/Test_ASPNET/Web.config | 36 ++---
source code/Test_ASPNET/packages.config | 16 +--
source code/Test_WinForm/packages.config | 12 --
.../Test_WinForm_DevartExpress/App.config | 4 +-
.../CryptoExpress.cs | 46 ++++++
.../FormCompareFile.cs | 2 +-
.../FormTestViewDependencies.cs | 2 +-
.../FormToolCreateSampleTable.cs | 1 -
.../Test_WinForm_DevartExpress/Program.cs | 4 +-
.../Properties/Settings.Designer.cs | 2 +-
.../Test_WinForm_DevartExpress.csproj | 11 +-
.../packages.config | 2 +-
.../Test_WinForm_MySqlConnector/App.config | 10 +-
.../CryptoExpress.cs | 46 ++++++
.../FormCompareFile.cs | 2 +-
.../FormTestViewDependencies.cs | 2 +-
.../FormToolCreateSampleTable.cs | 1 -
.../Test_WinForm_MySqlConnector/Program.cs | 7 +-
.../Properties/Resources.Designer.cs | 2 +-
.../Properties/Settings.Designer.cs | 2 +-
.../Test_WinForm_MySqlConnector.csproj | 27 ++--
.../packages.config | 16 +--
.../Test_WinForm_MySqlData/CryptoExpress.cs | 46 ++++++
.../FormAbout.Designer.cs | 0
.../FormAbout.cs | 0
.../FormAbout.resx | 0
.../FormCompareFile.Designer.cs | 0
.../FormCompareFile.cs | 4 +-
.../FormCompareFile.resx | 0
.../FormConnStringBuilder.Designer.cs | 0
.../FormConnStringBuilder.cs | 0
.../FormConnStringBuilder.resx | 0
.../FormDatabaseInfo.Designer.cs | 0
.../FormDatabaseInfo.cs | 0
.../FormDatabaseInfo.resx | 0
.../FormDecryptOldDumpFile.Designer.cs | 0
.../FormDecryptOldDumpFile.cs | 0
.../FormDecryptOldDumpFile.resx | 0
.../FormDumpFileViewer.Designer.cs | 0
.../FormDumpFileViewer.cs | 0
.../FormDumpFileViewer.resx | 0
.../FormMain.Designer.cs | 0
.../FormMain.cs | 0
.../FormMain.resx | 0
.../FormQueryBrowser.Designer.cs | 0
.../FormQueryBrowser.cs | 0
.../FormQueryBrowser.resx | 0
.../FormQueryBrowser2.Designer.cs | 0
.../FormQueryBrowser2.cs | 0
.../FormQueryBrowser2.resx | 0
.../FormReference.Designer.cs | 0
.../FormReference.cs | 0
.../FormReference.resx | 0
.../FormTestBlob.Designer.cs | 0
.../FormTestBlob.cs | 0
.../FormTestBlob.resx | 0
.../FormTestCustomTablesExport.Designer.cs | 0
.../FormTestCustomTablesExport.cs | 0
.../FormTestCustomTablesExport.resx | 0
.../FormTestEncryptDecrypt.Designer.cs | 0
.../FormTestEncryptDecrypt.cs | 0
.../FormTestEncryptDecrypt.resx | 0
.../FormTestExImWithOptions.Designer.cs | 0
.../FormTestExImWithOptions.cs | 0
.../FormTestExImWithOptions.resx | 0
.../FormTestExcludeTables.Designer.cs | 0
.../FormTestExcludeTables.cs | 0
.../FormTestExcludeTables.resx | 0
.../FormTestExportImportMemory.Designer.cs | 0
.../FormTestExportImportMemory.cs | 0
.../FormTestExportImportMemory.resx | 0
.../FormTestExportImportString.Designer.cs | 0
.../FormTestExportImportString.cs | 0
.../FormTestExportImportString.resx | 0
.../FormTestExportProgresBar.Designer.cs | 0
.../FormTestExportProgresBar.cs | 0
.../FormTestExportProgresBar.resx | 0
.../FormTestImportCaptureError.Designer.cs | 0
.../FormTestImportCaptureError.cs | 0
.../FormTestImportCaptureError.resx | 0
.../FormTestImportProgressReport.Designer.cs | 0
.../FormTestImportProgressReport.cs | 0
.../FormTestImportProgressReport.resx | 0
.../FormTestModifyHeadersFooters.Designer.cs | 0
.../FormTestModifyHeadersFooters.cs | 0
.../FormTestModifyHeadersFooters.resx | 0
.../FormTestSimple.Designer.cs | 0
.../FormTestSimple.cs | 0
.../FormTestSimple.resx | 0
.../FormTestViewDependencies.Designer.cs | 0
.../FormTestViewDependencies.cs | 2 +-
.../FormTestViewDependencies.resx | 0
.../FormTestZip.Designer.cs | 0
.../FormTestZip.cs | 0
.../FormTestZip.resx | 0
.../FormToolCreateSampleTable.Designer.cs | 0
.../FormToolCreateSampleTable.cs | 1 -
.../FormToolCreateSampleTable.resx | 0
.../HtmlExpress.cs | 0
.../Program.cs | 5 +-
.../Properties/AssemblyInfo.cs | 0
.../Properties/Resources.Designer.cs | 2 +-
.../Properties/Resources.resx | 0
.../Properties/Settings.Designer.cs | 2 +-
.../Properties/Settings.settings | 0
.../Resources/bullet_cross.png | Bin
.../Resources/disk.png | Bin
.../Resources/disk_edit.png | Bin
.../Resources/folder.png | Bin
.../Resources/logo128.png | Bin
.../Resources/q2.png | Bin
.../Test_WinForm_MySqlData.csproj} | 47 +++---
.../ZipStorer.cs | 0
.../app.config | 40 +++---
.../logo.ico | Bin
.../Test_WinForm_MySqlData/packages.config | 13 ++
145 files changed, 745 insertions(+), 533 deletions(-)
delete mode 100644 source code/MySqlBackup(MySql.Data)/MySqlBackup.NET_debug_81_v1.zip
create mode 100644 source code/README.md
delete mode 100644 source code/Test_WinForm/packages.config
create mode 100644 source code/Test_WinForm_DevartExpress/CryptoExpress.cs
create mode 100644 source code/Test_WinForm_MySqlConnector/CryptoExpress.cs
create mode 100644 source code/Test_WinForm_MySqlData/CryptoExpress.cs
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormAbout.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormAbout.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormAbout.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormCompareFile.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormCompareFile.cs (96%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormCompareFile.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormConnStringBuilder.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormConnStringBuilder.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormConnStringBuilder.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDatabaseInfo.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDatabaseInfo.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDatabaseInfo.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDecryptOldDumpFile.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDecryptOldDumpFile.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDecryptOldDumpFile.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDumpFileViewer.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDumpFileViewer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormDumpFileViewer.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormMain.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormMain.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormMain.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormQueryBrowser.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormQueryBrowser.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormQueryBrowser.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormQueryBrowser2.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormQueryBrowser2.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormQueryBrowser2.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormReference.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormReference.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormReference.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestBlob.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestBlob.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestBlob.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestCustomTablesExport.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestCustomTablesExport.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestCustomTablesExport.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestEncryptDecrypt.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestEncryptDecrypt.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestEncryptDecrypt.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExImWithOptions.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExImWithOptions.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExImWithOptions.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExcludeTables.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExcludeTables.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExcludeTables.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportImportMemory.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportImportMemory.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportImportMemory.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportImportString.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportImportString.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportImportString.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportProgresBar.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportProgresBar.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestExportProgresBar.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestImportCaptureError.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestImportCaptureError.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestImportCaptureError.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestImportProgressReport.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestImportProgressReport.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestImportProgressReport.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestModifyHeadersFooters.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestModifyHeadersFooters.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestModifyHeadersFooters.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestSimple.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestSimple.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestSimple.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestViewDependencies.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestViewDependencies.cs (99%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestViewDependencies.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestZip.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestZip.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormTestZip.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormToolCreateSampleTable.Designer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormToolCreateSampleTable.cs (99%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/FormToolCreateSampleTable.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/HtmlExpress.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Program.cs (93%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Properties/AssemblyInfo.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Properties/Resources.Designer.cs (98%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Properties/Resources.resx (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Properties/Settings.Designer.cs (97%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Properties/Settings.settings (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Resources/bullet_cross.png (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Resources/disk.png (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Resources/disk_edit.png (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Resources/folder.png (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Resources/logo128.png (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/Resources/q2.png (100%)
rename source code/{Test_WinForm/Test_WinForm.csproj => Test_WinForm_MySqlData/Test_WinForm_MySqlData.csproj} (89%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/ZipStorer.cs (100%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/app.config (57%)
rename source code/{Test_WinForm => Test_WinForm_MySqlData}/logo.ico (100%)
create mode 100644 source code/Test_WinForm_MySqlData/packages.config
diff --git a/source code/MySqlBackup(Devart-Express)/EventArgs/ExportCompleteArgs.cs b/source code/MySqlBackup(Devart-Express)/EventArgs/ExportCompleteArgs.cs
index 620359b..b3a687d 100644
--- a/source code/MySqlBackup(Devart-Express)/EventArgs/ExportCompleteArgs.cs
+++ b/source code/MySqlBackup(Devart-Express)/EventArgs/ExportCompleteArgs.cs
@@ -6,12 +6,12 @@ namespace Devart.Data.MySql
{
public class ExportCompleteArgs
{
- DateTime _timeStart, _timeEnd;
- TimeSpan _timeUsed = new TimeSpan();
+ MySqlBackup.ProcessEndType _completionType;
+ DateTime _timeStart;
+ DateTime _timeEnd;
+ TimeSpan _timeUsed;
Exception _exception;
- MySqlBackup.ProcessEndType _completionType = MySqlBackup.ProcessEndType.UnknownStatus;
-
///
/// The Starting time of export process.
///
@@ -25,14 +25,14 @@ public class ExportCompleteArgs
///
/// Total time used in current export process.
///
- public TimeSpan TimeUsed { get { return _timeUsed;}}
+ public TimeSpan TimeUsed { get { return _timeUsed; } }
public MySqlBackup.ProcessEndType CompletionType { get { return _completionType; } }
public Exception LastError { get { return _exception; } }
- public bool HasError { get { if (LastError != null) return true; return false; } }
-
+ public bool HasError { get { if (_exception != null) return true; return false; } }
+
public ExportCompleteArgs(DateTime timeStart, DateTime timeEnd, MySqlBackup.ProcessEndType endType, Exception exception)
{
_completionType = endType;
diff --git a/source code/MySqlBackup(Devart-Express)/EventArgs/ImportCompleteArgs.cs b/source code/MySqlBackup(Devart-Express)/EventArgs/ImportCompleteArgs.cs
index 2b9f7d5..2b9d3b3 100644
--- a/source code/MySqlBackup(Devart-Express)/EventArgs/ImportCompleteArgs.cs
+++ b/source code/MySqlBackup(Devart-Express)/EventArgs/ImportCompleteArgs.cs
@@ -6,26 +6,26 @@ namespace Devart.Data.MySql
{
public class ImportCompleteArgs
{
+ MySqlBackup.ProcessEndType _completionType;
+ DateTime _timeStart;
+ DateTime _timeEnd;
+ TimeSpan _timeUsed;
+ Exception _exception;
+
///
/// The starting time of import process.
///
- public DateTime TimeStart;
+ public DateTime TimeStart { get { return _timeStart; } }
///
/// The ending time of import process.
///
- public DateTime TimeEnd;
+ public DateTime TimeEnd { get { return _timeEnd; } }
///
- /// Enum of completion type
+ /// The completion type of current import processs.
///
- public enum CompleteType
- {
- UnknownStatus,
- Completed,
- Cancelled,
- Error
- }
+ public MySqlBackup.ProcessEndType CompleteType { get { return _completionType; } }
///
/// Indicates whether the import process has error(s).
@@ -35,16 +35,20 @@ public enum CompleteType
///
/// The last error (exception) occur in import process.
///
- public Exception LastError = null;
-
- //
- /// The completion type of current import processs.
- ///
- public CompleteType CompletedType = CompleteType.Completed;
+ public Exception LastError { get { return _exception; } }
///
/// Total time used in current import process.
///
- public TimeSpan TimeUsed => TimeEnd - TimeStart;
+ public TimeSpan TimeUsed { get { return _timeUsed; } }
+
+ public ImportCompleteArgs(MySqlBackup.ProcessEndType completionType, DateTime timeStart, DateTime timeEnd, Exception exception)
+ {
+ _completionType = completionType;
+ _timeStart = timeStart;
+ _timeEnd = timeEnd;
+ _timeUsed = timeEnd - timeStart;
+ _exception = exception;
+ }
}
}
diff --git a/source code/MySqlBackup(Devart-Express)/EventArgs/ImportProgressArgs.cs b/source code/MySqlBackup(Devart-Express)/EventArgs/ImportProgressArgs.cs
index 4f8e809..abc8cfc 100644
--- a/source code/MySqlBackup(Devart-Express)/EventArgs/ImportProgressArgs.cs
+++ b/source code/MySqlBackup(Devart-Express)/EventArgs/ImportProgressArgs.cs
@@ -8,6 +8,7 @@ public class ImportProgressArgs : EventArgs
{
long _curBytes = 0L;
long _totalBytes = 0L;
+ double _percentComplete = 0d;
///
/// Number of processed bytes in current import process.
@@ -22,12 +23,21 @@ public class ImportProgressArgs : EventArgs
///
/// Percentage of completeness.
///
- public int PercentageCompleted { get { return (int)(CurrentBytes *100L / TotalBytes); } }
+ public double PercentageCompleted { get { return _percentComplete; } }
public ImportProgressArgs(long currentBytes, long totalBytes)
{
_curBytes = currentBytes;
_totalBytes = totalBytes;
+
+ if (currentBytes == 0L || totalBytes == 0L)
+ {
+ _percentComplete = 0d;
+ }
+ else
+ {
+ _percentComplete = (double)currentBytes / (double)totalBytes * 100d;
+ }
}
}
}
diff --git a/source code/MySqlBackup(Devart-Express)/Methods/CryptoExpress.cs b/source code/MySqlBackup(Devart-Express)/Methods/CryptoExpress.cs
index 43853fd..48bb1ca 100644
--- a/source code/MySqlBackup(Devart-Express)/Methods/CryptoExpress.cs
+++ b/source code/MySqlBackup(Devart-Express)/Methods/CryptoExpress.cs
@@ -29,44 +29,44 @@ public static string ConvertByteArrayToHexString(byte[] ba)
return new string(c);
}
- public static string RandomString(int size)
- {
- byte[] randBuffer = new byte[size + (10)];
- RandomNumberGenerator.Create().GetBytes(randBuffer);
- return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
- }
+ //public static string RandomString(int size)
+ //{
+ // byte[] randBuffer = new byte[size + (10)];
+ // RandomNumberGenerator.Create().GetBytes(randBuffer);
+ // return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
+ //}
- public static string Sha128Hash(string input)
- {
- SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
- byte[] ba = Encoding.UTF8.GetBytes(input);
- byte[] ba2 = sha.ComputeHash(ba);
- sha = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha128Hash(string input)
+ //{
+ // SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // byte[] ba2 = sha.ComputeHash(ba);
+ // sha = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
- public static string Sha256Hash(string input)
- {
- byte[] ba = Encoding.UTF8.GetBytes(input);
- return Sha256Hash(ba);
- }
+ //public static string Sha256Hash(string input)
+ //{
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // return Sha256Hash(ba);
+ //}
- public static string Sha256Hash(byte[] ba)
- {
- SHA256Managed sha2 = new SHA256Managed();
- byte[] ba2 = sha2.ComputeHash(ba);
- sha2 = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha256Hash(byte[] ba)
+ //{
+ // SHA256Managed sha2 = new SHA256Managed();
+ // byte[] ba2 = sha2.ComputeHash(ba);
+ // sha2 = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
- public static string Sha512Hash(string input)
- {
- byte[] ba = Encoding.UTF8.GetBytes(input);
- SHA512Managed sha5 = new SHA512Managed();
- byte[] ba2 = sha5.ComputeHash(ba);
- sha5 = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha512Hash(string input)
+ //{
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // SHA512Managed sha5 = new SHA512Managed();
+ // byte[] ba2 = sha5.ComputeHash(ba);
+ // sha5 = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
//public static string AES_Encrypt(string input, string password)
//{
diff --git a/source code/MySqlBackup(Devart-Express)/Methods/QueryExpress.cs b/source code/MySqlBackup(Devart-Express)/Methods/QueryExpress.cs
index edb848a..57975ba 100644
--- a/source code/MySqlBackup(Devart-Express)/Methods/QueryExpress.cs
+++ b/source code/MySqlBackup(Devart-Express)/Methods/QueryExpress.cs
@@ -90,37 +90,37 @@ static void escape_string(StringBuilder sb, char c)
switch (c)
{
case '\\': // Backslash
- sb.AppendFormat("\\\\");
+ sb.Append("\\\\");
break;
case '\0': // Null
- sb.AppendFormat("\\0");
+ sb.Append("\\0");
break;
case '\r': // Carriage return
- sb.AppendFormat("\\r");
+ sb.Append("\\r");
break;
case '\n': // New Line
- sb.AppendFormat("\\n");
+ sb.Append("\\n");
+ break;
+ case '\a': // Vertical tab
+ sb.Append("\\a");
break;
- //case '\a': // Vertical tab
- // builder.AppendFormat("\\a");
- // break;
case '\b': // Backspace
- sb.AppendFormat("\\b");
+ sb.Append("\\b");
+ break;
+ case '\f': // Formfeed
+ sb.Append("\\f");
+ break;
+ case '\t': // Horizontal tab
+ sb.Append("\\t");
+ break;
+ case '\v': // Vertical tab
+ sb.Append("\\v");
break;
- //case '\f': // Formfeed
- // builder.AppendFormat("\\f");
- // break;
- //case '\t': // Horizontal tab
- // sb.AppendFormat("\\t");
- // break;
- //case '\v': // Vertical tab
- // builder.AppendFormat("\\v");
- // break;
case '\"': // Double quotation mark
- sb.AppendFormat("\\\"");
+ sb.Append("\\\"");
break;
case '\'': // Single quotation mark
- sb.AppendFormat("''");
+ sb.Append("''");
break;
default:
sb.Append(c);
diff --git a/source code/MySqlBackup(Devart-Express)/MySqlBackup(Devart-Express).csproj b/source code/MySqlBackup(Devart-Express)/MySqlBackup(Devart-Express).csproj
index 6186bd5..d0d76e0 100644
--- a/source code/MySqlBackup(Devart-Express)/MySqlBackup(Devart-Express).csproj
+++ b/source code/MySqlBackup(Devart-Express)/MySqlBackup(Devart-Express).csproj
@@ -1,7 +1,7 @@
- NET48;NET472;NET461;NET452;netcoreapp2.0;netcoreapp2.1;netcoreapp2.2;netcoreapp3.0;net5.0
+ net46;net47;net48;net481
Devart.Data.MySql
MySqlBackupNet.DevartExpress
logo.ico
@@ -13,14 +13,12 @@
A tool to backup and restore MySQL database in C#/VB.NET/ASP.NET. A special build for Devart Express (MySql) dotConnect.
MySqlBackup.NET
https://github.com/MySqlBackupNET/MySqlBackup.Net
- logo128.png
https://github.com/MySqlBackupNET/MySqlBackup.Net.git
git
mysqlbackup;devart;mysql
- 2.3.6.2
- 2.3.6.2
- 2.3.6.2
- README.md
+ 2.3.7
+ 2.3.7
+ 2.3.7
@@ -92,25 +90,7 @@
-
- True
-
-
-
- True
-
-
-
-
-
-
-
-
-
-
- True
-
-
+
diff --git a/source code/MySqlBackup(Devart-Express)/MySqlBackup.cs b/source code/MySqlBackup(Devart-Express)/MySqlBackup.cs
index 56114ef..38d18f1 100644
--- a/source code/MySqlBackup(Devart-Express)/MySqlBackup.cs
+++ b/source code/MySqlBackup(Devart-Express)/MySqlBackup.cs
@@ -1385,30 +1385,21 @@ void ReportEndProcess()
ReportProgress();
if (ImportCompleted != null)
{
- ImportCompleteArgs.CompleteType completedType;
+ MySqlBackup.ProcessEndType completedType = ProcessEndType.UnknownStatus;
switch (processCompletionType)
{
case ProcessEndType.Complete:
- completedType = ImportCompleteArgs.CompleteType.Completed;
+ completedType = MySqlBackup.ProcessEndType.Complete;
break;
case ProcessEndType.Error:
- completedType = ImportCompleteArgs.CompleteType.Error;
+ completedType = MySqlBackup.ProcessEndType.Error;
break;
case ProcessEndType.Cancelled:
- completedType = ImportCompleteArgs.CompleteType.Cancelled;
- break;
- default:
- completedType = ImportCompleteArgs.CompleteType.UnknownStatus;
+ completedType = MySqlBackup.ProcessEndType.Cancelled;
break;
}
- ImportCompleteArgs arg = new ImportCompleteArgs()
- {
- LastError = _lastError,
- CompletedType = completedType,
- TimeStart = timeStart,
- TimeEnd = timeEnd,
- };
+ ImportCompleteArgs arg = new ImportCompleteArgs(completedType, timeStart, timeEnd, _lastError);
ImportCompleted(this, arg);
}
}
diff --git a/source code/MySqlBackup(Devart-Express)/MySqlScript/MySqlScript.cs b/source code/MySqlBackup(Devart-Express)/MySqlScript/MySqlScript.cs
index dd2c36a..dda59bc 100644
--- a/source code/MySqlBackup(Devart-Express)/MySqlScript/MySqlScript.cs
+++ b/source code/MySqlBackup(Devart-Express)/MySqlScript/MySqlScript.cs
@@ -156,7 +156,7 @@ public int Execute()
// therefore safely allow the use of user variables. no one should be using
// this connection while we are using it so we can temporarily tell it
// to allow the use of user variables
- bool allowUserVars = true;
+ //bool allowUserVars = true;
try
{
diff --git a/source code/MySqlBackup(MySql.Data)/EventArgs/ExportCompleteArgs.cs b/source code/MySqlBackup(MySql.Data)/EventArgs/ExportCompleteArgs.cs
index 8df6694..4618d75 100644
--- a/source code/MySqlBackup(MySql.Data)/EventArgs/ExportCompleteArgs.cs
+++ b/source code/MySqlBackup(MySql.Data)/EventArgs/ExportCompleteArgs.cs
@@ -6,12 +6,12 @@ namespace MySql.Data.MySqlClient
{
public class ExportCompleteArgs
{
- DateTime _timeStart, _timeEnd;
- TimeSpan _timeUsed = new TimeSpan();
+ MySqlBackup.ProcessEndType _completionType;
+ DateTime _timeStart;
+ DateTime _timeEnd;
+ TimeSpan _timeUsed;
Exception _exception;
- MySqlBackup.ProcessEndType _completionType = MySqlBackup.ProcessEndType.UnknownStatus;
-
///
/// The Starting time of export process.
///
@@ -25,14 +25,14 @@ public class ExportCompleteArgs
///
/// Total time used in current export process.
///
- public TimeSpan TimeUsed { get { return _timeUsed;}}
+ public TimeSpan TimeUsed { get { return _timeUsed; } }
public MySqlBackup.ProcessEndType CompletionType { get { return _completionType; } }
public Exception LastError { get { return _exception; } }
- public bool HasError { get { if (LastError != null) return true; return false; } }
-
+ public bool HasError { get { if (_exception != null) return true; return false; } }
+
public ExportCompleteArgs(DateTime timeStart, DateTime timeEnd, MySqlBackup.ProcessEndType endType, Exception exception)
{
_completionType = endType;
diff --git a/source code/MySqlBackup(MySql.Data)/EventArgs/ImportCompleteArgs.cs b/source code/MySqlBackup(MySql.Data)/EventArgs/ImportCompleteArgs.cs
index ec9595d..031153a 100644
--- a/source code/MySqlBackup(MySql.Data)/EventArgs/ImportCompleteArgs.cs
+++ b/source code/MySqlBackup(MySql.Data)/EventArgs/ImportCompleteArgs.cs
@@ -6,26 +6,26 @@ namespace MySql.Data.MySqlClient
{
public class ImportCompleteArgs
{
+ MySqlBackup.ProcessEndType _completionType;
+ DateTime _timeStart;
+ DateTime _timeEnd;
+ TimeSpan _timeUsed;
+ Exception _exception;
+
///
/// The starting time of import process.
///
- public DateTime TimeStart;
+ public DateTime TimeStart { get { return _timeStart; } }
///
/// The ending time of import process.
///
- public DateTime TimeEnd;
+ public DateTime TimeEnd { get { return _timeEnd; } }
///
- /// Enum of completion type
+ /// The completion type of current import processs.
///
- public enum CompleteType
- {
- UnknownStatus,
- Completed,
- Cancelled,
- Error
- }
+ public MySqlBackup.ProcessEndType CompleteType { get { return _completionType; } }
///
/// Indicates whether the import process has error(s).
@@ -35,16 +35,20 @@ public enum CompleteType
///
/// The last error (exception) occur in import process.
///
- public Exception LastError = null;
-
- //
- /// The completion type of current import processs.
- ///
- public CompleteType CompletedType = CompleteType.Completed;
+ public Exception LastError { get { return _exception; } }
///
/// Total time used in current import process.
///
- public TimeSpan TimeUsed => TimeEnd - TimeStart;
+ public TimeSpan TimeUsed { get { return _timeUsed; } }
+
+ public ImportCompleteArgs(MySqlBackup.ProcessEndType completionType, DateTime timeStart, DateTime timeEnd, Exception exception)
+ {
+ _completionType = completionType;
+ _timeStart = timeStart;
+ _timeEnd = timeEnd;
+ _timeUsed = timeEnd - timeStart;
+ _exception = exception;
+ }
}
}
diff --git a/source code/MySqlBackup(MySql.Data)/EventArgs/ImportProgressArgs.cs b/source code/MySqlBackup(MySql.Data)/EventArgs/ImportProgressArgs.cs
index 68d3816..a67cd22 100644
--- a/source code/MySqlBackup(MySql.Data)/EventArgs/ImportProgressArgs.cs
+++ b/source code/MySqlBackup(MySql.Data)/EventArgs/ImportProgressArgs.cs
@@ -8,6 +8,7 @@ public class ImportProgressArgs : EventArgs
{
long _curBytes = 0L;
long _totalBytes = 0L;
+ double _percentComplete = 0d;
///
/// Number of processed bytes in current import process.
@@ -22,12 +23,21 @@ public class ImportProgressArgs : EventArgs
///
/// Percentage of completeness.
///
- public int PercentageCompleted { get { return (int)(CurrentBytes *100L / TotalBytes); } }
+ public double PercentageCompleted { get { return _percentComplete; } }
public ImportProgressArgs(long currentBytes, long totalBytes)
{
_curBytes = currentBytes;
_totalBytes = totalBytes;
+
+ if (currentBytes == 0L || totalBytes == 0L)
+ {
+ _percentComplete = 0d;
+ }
+ else
+ {
+ _percentComplete = (double)currentBytes / (double)totalBytes * 100d;
+ }
}
}
}
diff --git a/source code/MySqlBackup(MySql.Data)/Methods/CryptoExpress.cs b/source code/MySqlBackup(MySql.Data)/Methods/CryptoExpress.cs
index 43853fd..48bb1ca 100644
--- a/source code/MySqlBackup(MySql.Data)/Methods/CryptoExpress.cs
+++ b/source code/MySqlBackup(MySql.Data)/Methods/CryptoExpress.cs
@@ -29,44 +29,44 @@ public static string ConvertByteArrayToHexString(byte[] ba)
return new string(c);
}
- public static string RandomString(int size)
- {
- byte[] randBuffer = new byte[size + (10)];
- RandomNumberGenerator.Create().GetBytes(randBuffer);
- return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
- }
+ //public static string RandomString(int size)
+ //{
+ // byte[] randBuffer = new byte[size + (10)];
+ // RandomNumberGenerator.Create().GetBytes(randBuffer);
+ // return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
+ //}
- public static string Sha128Hash(string input)
- {
- SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
- byte[] ba = Encoding.UTF8.GetBytes(input);
- byte[] ba2 = sha.ComputeHash(ba);
- sha = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha128Hash(string input)
+ //{
+ // SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // byte[] ba2 = sha.ComputeHash(ba);
+ // sha = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
- public static string Sha256Hash(string input)
- {
- byte[] ba = Encoding.UTF8.GetBytes(input);
- return Sha256Hash(ba);
- }
+ //public static string Sha256Hash(string input)
+ //{
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // return Sha256Hash(ba);
+ //}
- public static string Sha256Hash(byte[] ba)
- {
- SHA256Managed sha2 = new SHA256Managed();
- byte[] ba2 = sha2.ComputeHash(ba);
- sha2 = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha256Hash(byte[] ba)
+ //{
+ // SHA256Managed sha2 = new SHA256Managed();
+ // byte[] ba2 = sha2.ComputeHash(ba);
+ // sha2 = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
- public static string Sha512Hash(string input)
- {
- byte[] ba = Encoding.UTF8.GetBytes(input);
- SHA512Managed sha5 = new SHA512Managed();
- byte[] ba2 = sha5.ComputeHash(ba);
- sha5 = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha512Hash(string input)
+ //{
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // SHA512Managed sha5 = new SHA512Managed();
+ // byte[] ba2 = sha5.ComputeHash(ba);
+ // sha5 = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
//public static string AES_Encrypt(string input, string password)
//{
diff --git a/source code/MySqlBackup(MySql.Data)/Methods/QueryExpress.cs b/source code/MySqlBackup(MySql.Data)/Methods/QueryExpress.cs
index 6d1bad3..dc3b192 100644
--- a/source code/MySqlBackup(MySql.Data)/Methods/QueryExpress.cs
+++ b/source code/MySqlBackup(MySql.Data)/Methods/QueryExpress.cs
@@ -67,8 +67,9 @@ public static string ExecuteScalarStr(MySqlCommand cmd, string sql, string colum
public static long ExecuteScalarLong(MySqlCommand cmd, string sql)
{
+ long l = 0;
cmd.CommandText = sql;
- long.TryParse(cmd.ExecuteScalar() + "", out var l);
+ long.TryParse(cmd.ExecuteScalar() + "", out l);
return l;
}
@@ -89,37 +90,37 @@ static void escape_string(StringBuilder sb, char c)
switch (c)
{
case '\\': // Backslash
- sb.AppendFormat("\\\\");
+ sb.Append("\\\\");
break;
case '\0': // Null
- sb.AppendFormat("\\0");
+ sb.Append("\\0");
break;
case '\r': // Carriage return
- sb.AppendFormat("\\r");
+ sb.Append("\\r");
break;
case '\n': // New Line
- sb.AppendFormat("\\n");
+ sb.Append("\\n");
+ break;
+ case '\a': // Vertical tab
+ sb.Append("\\a");
break;
- //case '\a': // Vertical tab
- // builder.AppendFormat("\\a");
- // break;
case '\b': // Backspace
- sb.AppendFormat("\\b");
+ sb.Append("\\b");
+ break;
+ case '\f': // Formfeed
+ sb.Append("\\f");
+ break;
+ case '\t': // Horizontal tab
+ sb.Append("\\t");
+ break;
+ case '\v': // Vertical tab
+ sb.Append("\\v");
break;
- //case '\f': // Formfeed
- // builder.AppendFormat("\\f");
- // break;
- //case '\t': // Horizontal tab
- // sb.AppendFormat("\\t");
- // break;
- //case '\v': // Vertical tab
- // builder.AppendFormat("\\v");
- // break;
case '\"': // Double quotation mark
- sb.AppendFormat("\\\"");
+ sb.Append("\\\"");
break;
case '\'': // Single quotation mark
- sb.AppendFormat("''");
+ sb.Append("''");
break;
default:
sb.Append(c);
diff --git a/source code/MySqlBackup(MySql.Data)/MySqlBackup(MySql.Data).csproj b/source code/MySqlBackup(MySql.Data)/MySqlBackup(MySql.Data).csproj
index 98cbfcb..2478c76 100644
--- a/source code/MySqlBackup(MySql.Data)/MySqlBackup(MySql.Data).csproj
+++ b/source code/MySqlBackup(MySql.Data)/MySqlBackup(MySql.Data).csproj
@@ -1,7 +1,7 @@
- netstandard2.0;NET48;NET472;NET461;NET452
+ net48;net481;netstandard2.0;netstandard2.1;net6.0;
MySql.Data.Client
true
disable
@@ -12,16 +12,14 @@
A tool to backup and restore MySQL database in C#/VB.NET/ASP.NET.
Public Domain
https://github.com/MySqlBackupNET/MySqlBackup.Net
- logo128.png
git
https://github.com/MySqlBackupNET/MySqlBackup.Net
- 2.3.6.2
- 2.3.6.2
- 2.3.6.2
+ 2.3.7
+ 2.3.7
+ 2.3.7
True
MySqlBackup
logo.ico
- README.md
@@ -29,18 +27,7 @@
-
- True
-
-
-
- True
-
-
-
-
-
-
+
diff --git a/source code/MySqlBackup(MySql.Data)/MySqlBackup.NET_debug_81_v1.zip b/source code/MySqlBackup(MySql.Data)/MySqlBackup.NET_debug_81_v1.zip
deleted file mode 100644
index 35969d3c15bdee56ca007a66c4ffe3dff1397222..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 32127
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
Tq50Fd$9oeCIPq4Te!lvD#Bbi*
diff --git a/source code/MySqlBackup(MySql.Data)/MySqlBackup.cs b/source code/MySqlBackup(MySql.Data)/MySqlBackup.cs
index 6e723fc..918c8bb 100644
--- a/source code/MySqlBackup(MySql.Data)/MySqlBackup.cs
+++ b/source code/MySqlBackup(MySql.Data)/MySqlBackup.cs
@@ -1385,30 +1385,21 @@ void ReportEndProcess()
ReportProgress();
if (ImportCompleted != null)
{
- ImportCompleteArgs.CompleteType completedType;
+ MySqlBackup.ProcessEndType completedType = ProcessEndType.UnknownStatus;
switch (processCompletionType)
{
case ProcessEndType.Complete:
- completedType = ImportCompleteArgs.CompleteType.Completed;
+ completedType = MySqlBackup.ProcessEndType.Complete;
break;
case ProcessEndType.Error:
- completedType = ImportCompleteArgs.CompleteType.Error;
+ completedType = MySqlBackup.ProcessEndType.Error;
break;
case ProcessEndType.Cancelled:
- completedType = ImportCompleteArgs.CompleteType.Cancelled;
- break;
- default:
- completedType = ImportCompleteArgs.CompleteType.UnknownStatus;
+ completedType = MySqlBackup.ProcessEndType.Cancelled;
break;
}
- ImportCompleteArgs arg = new ImportCompleteArgs()
- {
- LastError = _lastError,
- CompletedType = completedType,
- TimeStart = timeStart,
- TimeEnd = timeEnd,
- };
+ ImportCompleteArgs arg = new ImportCompleteArgs(completedType, timeStart, timeEnd, _lastError);
ImportCompleted(this, arg);
}
}
diff --git a/source code/MySqlBackup(MySqlConnector)/EventArgs/ExportCompleteArgs.cs b/source code/MySqlBackup(MySqlConnector)/EventArgs/ExportCompleteArgs.cs
index fe98744..fc542e0 100644
--- a/source code/MySqlBackup(MySqlConnector)/EventArgs/ExportCompleteArgs.cs
+++ b/source code/MySqlBackup(MySqlConnector)/EventArgs/ExportCompleteArgs.cs
@@ -6,12 +6,12 @@ namespace MySqlConnector
{
public class ExportCompleteArgs
{
- DateTime _timeStart, _timeEnd;
- TimeSpan _timeUsed = new TimeSpan();
+ MySqlBackup.ProcessEndType _completionType;
+ DateTime _timeStart;
+ DateTime _timeEnd;
+ TimeSpan _timeUsed;
Exception _exception;
- MySqlBackup.ProcessEndType _completionType = MySqlBackup.ProcessEndType.UnknownStatus;
-
///
/// The Starting time of export process.
///
@@ -25,14 +25,14 @@ public class ExportCompleteArgs
///
/// Total time used in current export process.
///
- public TimeSpan TimeUsed { get { return _timeUsed;}}
+ public TimeSpan TimeUsed { get { return _timeUsed; } }
public MySqlBackup.ProcessEndType CompletionType { get { return _completionType; } }
public Exception LastError { get { return _exception; } }
- public bool HasError { get { if (LastError != null) return true; return false; } }
-
+ public bool HasError { get { if (_exception != null) return true; return false; } }
+
public ExportCompleteArgs(DateTime timeStart, DateTime timeEnd, MySqlBackup.ProcessEndType endType, Exception exception)
{
_completionType = endType;
diff --git a/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportCompleteArgs.cs b/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportCompleteArgs.cs
index 9dd6db9..8bc02bf 100644
--- a/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportCompleteArgs.cs
+++ b/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportCompleteArgs.cs
@@ -6,26 +6,26 @@ namespace MySqlConnector
{
public class ImportCompleteArgs
{
+ MySqlBackup.ProcessEndType _completionType;
+ DateTime _timeStart;
+ DateTime _timeEnd;
+ TimeSpan _timeUsed;
+ Exception _exception;
+
///
/// The starting time of import process.
///
- public DateTime TimeStart;
+ public DateTime TimeStart { get { return _timeStart; } }
///
/// The ending time of import process.
///
- public DateTime TimeEnd;
+ public DateTime TimeEnd { get { return _timeEnd; } }
///
- /// Enum of completion type
+ /// The completion type of current import processs.
///
- public enum CompleteType
- {
- UnknownStatus,
- Completed,
- Cancelled,
- Error
- }
+ public MySqlBackup.ProcessEndType CompleteType { get { return _completionType; } }
///
/// Indicates whether the import process has error(s).
@@ -35,16 +35,20 @@ public enum CompleteType
///
/// The last error (exception) occur in import process.
///
- public Exception LastError = null;
-
- //
- /// The completion type of current import processs.
- ///
- public CompleteType CompletedType = CompleteType.Completed;
+ public Exception LastError { get { return _exception; } }
///
/// Total time used in current import process.
///
- public TimeSpan TimeUsed => TimeEnd - TimeStart;
+ public TimeSpan TimeUsed { get { return _timeUsed; } }
+
+ public ImportCompleteArgs(MySqlBackup.ProcessEndType completionType, DateTime timeStart, DateTime timeEnd, Exception exception)
+ {
+ _completionType = completionType;
+ _timeStart = timeStart;
+ _timeEnd = timeEnd;
+ _timeUsed = timeEnd - timeStart;
+ _exception = exception;
+ }
}
}
diff --git a/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportProgressArgs.cs b/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportProgressArgs.cs
index fb8bfa8..30d1cf3 100644
--- a/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportProgressArgs.cs
+++ b/source code/MySqlBackup(MySqlConnector)/EventArgs/ImportProgressArgs.cs
@@ -8,6 +8,7 @@ public class ImportProgressArgs : EventArgs
{
long _curBytes = 0L;
long _totalBytes = 0L;
+ double _percentComplete = 0d;
///
/// Number of processed bytes in current import process.
@@ -22,12 +23,21 @@ public class ImportProgressArgs : EventArgs
///
/// Percentage of completeness.
///
- public int PercentageCompleted { get { return (int)(CurrentBytes *100L / TotalBytes); } }
+ public double PercentageCompleted { get { return _percentComplete; } }
public ImportProgressArgs(long currentBytes, long totalBytes)
{
_curBytes = currentBytes;
_totalBytes = totalBytes;
+
+ if (currentBytes == 0L || totalBytes == 0L)
+ {
+ _percentComplete = 0d;
+ }
+ else
+ {
+ _percentComplete = (double)currentBytes / (double)totalBytes * 100d;
+ }
}
}
}
diff --git a/source code/MySqlBackup(MySqlConnector)/Methods/CryptoExpress.cs b/source code/MySqlBackup(MySqlConnector)/Methods/CryptoExpress.cs
index 43853fd..48bb1ca 100644
--- a/source code/MySqlBackup(MySqlConnector)/Methods/CryptoExpress.cs
+++ b/source code/MySqlBackup(MySqlConnector)/Methods/CryptoExpress.cs
@@ -29,44 +29,44 @@ public static string ConvertByteArrayToHexString(byte[] ba)
return new string(c);
}
- public static string RandomString(int size)
- {
- byte[] randBuffer = new byte[size + (10)];
- RandomNumberGenerator.Create().GetBytes(randBuffer);
- return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
- }
+ //public static string RandomString(int size)
+ //{
+ // byte[] randBuffer = new byte[size + (10)];
+ // RandomNumberGenerator.Create().GetBytes(randBuffer);
+ // return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
+ //}
- public static string Sha128Hash(string input)
- {
- SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
- byte[] ba = Encoding.UTF8.GetBytes(input);
- byte[] ba2 = sha.ComputeHash(ba);
- sha = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha128Hash(string input)
+ //{
+ // SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider();
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // byte[] ba2 = sha.ComputeHash(ba);
+ // sha = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
- public static string Sha256Hash(string input)
- {
- byte[] ba = Encoding.UTF8.GetBytes(input);
- return Sha256Hash(ba);
- }
+ //public static string Sha256Hash(string input)
+ //{
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // return Sha256Hash(ba);
+ //}
- public static string Sha256Hash(byte[] ba)
- {
- SHA256Managed sha2 = new SHA256Managed();
- byte[] ba2 = sha2.ComputeHash(ba);
- sha2 = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha256Hash(byte[] ba)
+ //{
+ // SHA256Managed sha2 = new SHA256Managed();
+ // byte[] ba2 = sha2.ComputeHash(ba);
+ // sha2 = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
- public static string Sha512Hash(string input)
- {
- byte[] ba = Encoding.UTF8.GetBytes(input);
- SHA512Managed sha5 = new SHA512Managed();
- byte[] ba2 = sha5.ComputeHash(ba);
- sha5 = null;
- return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
- }
+ //public static string Sha512Hash(string input)
+ //{
+ // byte[] ba = Encoding.UTF8.GetBytes(input);
+ // SHA512Managed sha5 = new SHA512Managed();
+ // byte[] ba2 = sha5.ComputeHash(ba);
+ // sha5 = null;
+ // return BitConverter.ToString(ba2).Replace("-", string.Empty).ToLower();
+ //}
//public static string AES_Encrypt(string input, string password)
//{
diff --git a/source code/MySqlBackup(MySqlConnector)/Methods/QueryExpress.cs b/source code/MySqlBackup(MySqlConnector)/Methods/QueryExpress.cs
index 13fdfe6..504b1f5 100644
--- a/source code/MySqlBackup(MySqlConnector)/Methods/QueryExpress.cs
+++ b/source code/MySqlBackup(MySqlConnector)/Methods/QueryExpress.cs
@@ -67,8 +67,9 @@ public static string ExecuteScalarStr(MySqlCommand cmd, string sql, string colum
public static long ExecuteScalarLong(MySqlCommand cmd, string sql)
{
+ long l = 0;
cmd.CommandText = sql;
- long.TryParse(cmd.ExecuteScalar() + "", out var l);
+ long.TryParse(cmd.ExecuteScalar() + "", out l);
return l;
}
@@ -89,37 +90,37 @@ static void escape_string(StringBuilder sb, char c)
switch (c)
{
case '\\': // Backslash
- sb.AppendFormat("\\\\");
+ sb.Append("\\\\");
break;
case '\0': // Null
- sb.AppendFormat("\\0");
+ sb.Append("\\0");
break;
case '\r': // Carriage return
- sb.AppendFormat("\\r");
+ sb.Append("\\r");
break;
case '\n': // New Line
- sb.AppendFormat("\\n");
+ sb.Append("\\n");
+ break;
+ case '\a': // Vertical tab
+ sb.Append("\\a");
break;
- //case '\a': // Vertical tab
- // builder.AppendFormat("\\a");
- // break;
case '\b': // Backspace
- sb.AppendFormat("\\b");
+ sb.Append("\\b");
+ break;
+ case '\f': // Formfeed
+ sb.Append("\\f");
+ break;
+ case '\t': // Horizontal tab
+ sb.Append("\\t");
+ break;
+ case '\v': // Vertical tab
+ sb.Append("\\v");
break;
- //case '\f': // Formfeed
- // builder.AppendFormat("\\f");
- // break;
- //case '\t': // Horizontal tab
- // sb.AppendFormat("\\t");
- // break;
- //case '\v': // Vertical tab
- // builder.AppendFormat("\\v");
- // break;
case '\"': // Double quotation mark
- sb.AppendFormat("\\\"");
+ sb.Append("\\\"");
break;
case '\'': // Single quotation mark
- sb.AppendFormat("''");
+ sb.Append("''");
break;
default:
sb.Append(c);
@@ -404,4 +405,4 @@ public static string ConvertToSqlFormat(object ob, bool wrapStringWithSingleQuot
}
}
-}
\ No newline at end of file
+}
diff --git a/source code/MySqlBackup(MySqlConnector)/MySqlBackup(MySqlConnector).csproj b/source code/MySqlBackup(MySqlConnector)/MySqlBackup(MySqlConnector).csproj
index 7278364..47d85ea 100644
--- a/source code/MySqlBackup(MySqlConnector)/MySqlBackup(MySqlConnector).csproj
+++ b/source code/MySqlBackup(MySqlConnector)/MySqlBackup(MySqlConnector).csproj
@@ -1,7 +1,7 @@
- NET48;NET472;NET461;NET452;netcoreapp2.1;netcoreapp3.1;netstandard2.0;netstandard2.1
+ net471;net48;net481;netstandard2.0;netstandard2.1;netcoreapp3.1;net6.0;
MySqlConnector
true
disable
@@ -12,17 +12,15 @@
A tool to backup and restore MySQL database in C#/VB.NET/ASP.NET. This library runs with MySqlConnector (MIT)
Public Domain
https://github.com/MySqlBackupNET/MySqlBackup.Net
- logo128.png
git
https://github.com/MySqlBackupNET/MySqlBackup.Net
- 2.3.6.2
- 2.3.6.2
- 2.3.6.2
+ 2.3.7
+ 2.3.7
+ 2.3.7
True
MySqlBackupNet.MySqlConnector
logo.ico
mysqlbackup;mysqlconnector
- README.md
@@ -30,18 +28,7 @@
-
- True
-
-
-
- True
-
-
-
-
-
-
+
diff --git a/source code/MySqlBackup(MySqlConnector)/MySqlBackup.cs b/source code/MySqlBackup(MySqlConnector)/MySqlBackup.cs
index 18f6215..8a34742 100644
--- a/source code/MySqlBackup(MySqlConnector)/MySqlBackup.cs
+++ b/source code/MySqlBackup(MySqlConnector)/MySqlBackup.cs
@@ -1385,30 +1385,21 @@ void ReportEndProcess()
ReportProgress();
if (ImportCompleted != null)
{
- ImportCompleteArgs.CompleteType completedType;
+ MySqlBackup.ProcessEndType completedType = ProcessEndType.UnknownStatus;
switch (processCompletionType)
{
case ProcessEndType.Complete:
- completedType = ImportCompleteArgs.CompleteType.Completed;
+ completedType = MySqlBackup.ProcessEndType.Complete;
break;
case ProcessEndType.Error:
- completedType = ImportCompleteArgs.CompleteType.Error;
+ completedType = MySqlBackup.ProcessEndType.Error;
break;
case ProcessEndType.Cancelled:
- completedType = ImportCompleteArgs.CompleteType.Cancelled;
- break;
- default:
- completedType = ImportCompleteArgs.CompleteType.UnknownStatus;
+ completedType = MySqlBackup.ProcessEndType.Cancelled;
break;
}
- ImportCompleteArgs arg = new ImportCompleteArgs()
- {
- LastError = _lastError,
- CompletedType = completedType,
- TimeStart = timeStart,
- TimeEnd = timeEnd,
- };
+ ImportCompleteArgs arg = new ImportCompleteArgs(completedType, timeStart, timeEnd, _lastError);
ImportCompleted(this, arg);
}
}
diff --git a/source code/MySqlBackup(MySqlConnector)/MySqlScript/MySqlScript.cs b/source code/MySqlBackup(MySqlConnector)/MySqlScript/MySqlScript.cs
index 0ba125e..dc1e085 100644
--- a/source code/MySqlBackup(MySqlConnector)/MySqlScript/MySqlScript.cs
+++ b/source code/MySqlBackup(MySqlConnector)/MySqlScript/MySqlScript.cs
@@ -156,7 +156,7 @@ public int Execute()
// therefore safely allow the use of user variables. no one should be using
// this connection while we are using it so we can temporarily tell it
// to allow the use of user variables
- bool allowUserVars = true;
+ //bool allowUserVars = true;
try
{
diff --git a/source code/MySqlBackup.sln b/source code/MySqlBackup.sln
index 724df19..0a2529d 100644
--- a/source code/MySqlBackup.sln
+++ b/source code/MySqlBackup.sln
@@ -5,8 +5,6 @@ VisualStudioVersion = 17.0.31612.314
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_ASP.NET", "Test_ASPNET\Test_ASP.NET.csproj", "{0A28DC07-B40C-4E6E-A14B-D5C0AC7E2CEA}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_WinForm", "Test_WinForm\Test_WinForm.csproj", "{0C44B679-BC54-4818-9E77-6BE2C14E680B}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_WinForm_DevartExpress", "Test_WinForm_DevartExpress\Test_WinForm_DevartExpress.csproj", "{2D5FB34D-2552-444C-9AAE-2D01E6438551}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_WinForm_MySqlConnector", "Test_WinForm_MySqlConnector\Test_WinForm_MySqlConnector.csproj", "{96B8C5E6-49D0-48BE-A3D6-DA479AC2409D}"
@@ -17,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlBackup(MySql.Data)", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MySqlBackup(MySqlConnector)", "MySqlBackup(MySqlConnector)\MySqlBackup(MySqlConnector).csproj", "{280A4426-14CC-4A20-85F7-2F8E863A9977}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test_WinForm_MySqlData", "Test_WinForm_MySqlData\Test_WinForm_MySqlData.csproj", "{0C44B679-BC54-4818-9E77-6BE2C14E680B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -33,14 +33,6 @@ Global
{0A28DC07-B40C-4E6E-A14B-D5C0AC7E2CEA}.Release|Any CPU.Build.0 = Release|Any CPU
{0A28DC07-B40C-4E6E-A14B-D5C0AC7E2CEA}.ReleaseNET40_Only|Any CPU.ActiveCfg = Release|Any CPU
{0A28DC07-B40C-4E6E-A14B-D5C0AC7E2CEA}.ReleaseNET40_Only|Any CPU.Build.0 = Release|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.NET20|Any CPU.ActiveCfg = Release|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.NET20|Any CPU.Build.0 = Release|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Release|Any CPU.Build.0 = Release|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.ReleaseNET40_Only|Any CPU.ActiveCfg = Release|Any CPU
- {0C44B679-BC54-4818-9E77-6BE2C14E680B}.ReleaseNET40_Only|Any CPU.Build.0 = Release|Any CPU
{2D5FB34D-2552-444C-9AAE-2D01E6438551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D5FB34D-2552-444C-9AAE-2D01E6438551}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D5FB34D-2552-444C-9AAE-2D01E6438551}.NET20|Any CPU.ActiveCfg = Release|Any CPU
@@ -81,6 +73,14 @@ Global
{280A4426-14CC-4A20-85F7-2F8E863A9977}.Release|Any CPU.Build.0 = Release|Any CPU
{280A4426-14CC-4A20-85F7-2F8E863A9977}.ReleaseNET40_Only|Any CPU.ActiveCfg = Release|Any CPU
{280A4426-14CC-4A20-85F7-2F8E863A9977}.ReleaseNET40_Only|Any CPU.Build.0 = Release|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.NET20|Any CPU.ActiveCfg = Debug|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.NET20|Any CPU.Build.0 = Debug|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.ReleaseNET40_Only|Any CPU.ActiveCfg = Release|Any CPU
+ {0C44B679-BC54-4818-9E77-6BE2C14E680B}.ReleaseNET40_Only|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/source code/README.md b/source code/README.md
new file mode 100644
index 0000000..7aecb80
--- /dev/null
+++ b/source code/README.md
@@ -0,0 +1,134 @@
+# About
+
+A tool to backup and restore MySQL database in C#/VB.NET/ASP.NET.
+
+Runs on MySql.Data.DLL, MySqlConnector.DLL and Devart.Express.MySql.DLL
+
+More documentation is available at the [Project Github website](https://github.com/MySqlBackupNET/MySqlBackup.Net).
+
+**For MySql.Data.DLL**
+PM> Install-Package MySqlBackup.NET
+[https://www.nuget.org/packages/MySqlBackup.NET/](https://www.nuget.org/packages/MySqlBackup.NET/)
+
+**For dotConnector Devart.Express.MySql**
+PM> Install-Package MySqlBackup.Net.DevartExpress
+[https://www.nuget.org/packages/MySqlBackup.Net.DevartExpress/](https://www.nuget.org/packages/MySqlBackup.Net.DevartExpress/)
+
+**For MySqlConnector (MIT)**
+PM> Install-Package MySqlBackup.NET.MySqlConnector
+[https://www.nuget.org/packages/MySqlBackup.NET.MysqlConnector/](https://www.nuget.org/packages/MySqlBackup.NET.MysqlConnector/)
+
+## Backup/Export a MySQL Database
+```C#
+string constring = "server=localhost;user=root;pwd=qwerty;database=test;convertzerodatetime=true;";
+
+string file = "C:\\backup.sql";
+
+using (MySqlConnection conn = new MySqlConnection(constring))
+{
+ using (MySqlCommand cmd = new MySqlCommand())
+ {
+ using (MySqlBackup mb = new MySqlBackup(cmd))
+ {
+ cmd.Connection = conn;
+ conn.Open();
+ mb.ExportToFile(file);
+ conn.Close();
+ }
+ }
+}
+```
+
+## Import/Restore a MySQL Database
+
+```C#
+string constring = "server=localhost;user=root;pwd=qwerty;database=test;convertzerodatetime=true;";
+
+string file = "C:\\backup.sql";
+
+using (MySqlConnection conn = new MySqlConnection(constring))
+{
+ using (MySqlCommand cmd = new MySqlCommand())
+ {
+ using (MySqlBackup mb = new MySqlBackup(cmd))
+ {
+ cmd.Connection = conn;
+ conn.Open();
+ mb.ImportFromFile(file);
+ conn.Close();
+ }
+ }
+}
+```
+
+## Introduction
+
+MySqlBackup.NET is a tool (DLL) that can backup/restore MySQL database in .NET Programming Language. It is an alternative to MySqlDump.
+
+This tool is developed in C# but able to be used in any .NET Language (i.e. VB.NET, F#, etc.).
+
+Another benefit of making this tool is, we don't have to rely on two small programs - MySqlDump.exe and MySql.exe to perform the backup and restore task. We will have better control on the output result in .NET way.
+
+The most common way to backup a MySQL Database is by using MySqlDump and MySQL Workbench.
+
+MySQL Workbench is good for developers, but when comes to the client or end-user, the recommended way is to get every parameter preset and all they need to know is press the big button "Backup" and everything is done. Using MySQL Workbench as a backup tool is not a suitable solution for the client or end-user.
+
+On the other hand, MySqlDump.exe cannot be executed directly from the Web Server. As some providers forbid that, MySqlBackup will be helpful in building a web-based (ASP.NET) backup tool.
+
+## Features
+
+* Backup and Restore of MySQL Database
+* Can be used in any .NET Languages.
+* Export/Import to/from MemoryStream
+* Conditional Rows Export (Filter Tables or Rows)
+* Progress Report is Available for Both Export and Import Task.
+* Able to export rows into different modes. (Insert, Insert Ignore, Replace, On Duplicate Key Update, Update)
+* Can be used directly in ASP.NET or web services.
+
+## Prerequisite and Dependencies for Development, Compile and Production Usage
+
+MySqlBackup.NET relies on the following component to work.
+
+**Option 1: MySql.Data (Connector/NET)**
+* [MySQL dot net Connector/Net (MySql.Data.DLL)](http://www.mysql.com/downloads/connector/net/)
+* MySql.Data.DLL is developed by Oracle Corporation, licensed under GPL License (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)._
+
+**Option 2: Devart Express (dotConnect)**
+* [Devart dotConnect for MySQL Express](https://www.devart.com/dotconnect/mysql/)
+* For license agreement, please read: [https://www.devart.com/dotconnect/mysql/licensing-faq.html](https://www.devart.com/dotconnect/mysql/licensing-faq.html)
+* Devart.Data.DLL
+* Devart.Data.MySql.DLL
+
+**Option 3: MySqlConnector (MIT)**
+* [MySqlConnector: High Performance MySQL Library for .NET](https://mysqlconnector.net/)
+* Project URL: https://github.com/mysql-net/MySqlConnector
+* Licensed under MIT
+* MySqlConnector.DLL
+
+## Reminder
+
+### Reminder 1
+
+MySqlBackup.NET (or MySqlBackup.DLL) stands on top of MySql.Data.DLL which also stands on top of .NET Framework, which uses UTF8 encoding by default.
+If your database involves any UTF8 or Unicode Characters. You must use a MySQL database with default character of **UTF8** while handling Unicode Characters, such as
+
+* Western European specific languages, the character of 'À', 'ë', 'õ', 'Ñ'.
+* Russian, Hebrew, India, Arabic, Chinese, Korean, Japanese characters, etc.
+
+You are recommended to apply the connection string option of charset=utf8. Example:
+
+```
+server=localhost;user=root;pwd=mypwd;charset=utf8;
+```
+or
+```
+server=localhost;user=root;pwd=mypwd;charset=utf8mb4;
+```
+### Reminder 2
+
+(For MySql.Data connector only)
+DateTime conversion between MySQL and .NET Framework. In MySQL, there are various of DateTime format, such as null value or Date only data. But, in .NET Framework, there is no null value (or Date only) for DateTime. This error is not caused by MySqlBackup.DLL. MySql.Data.DLL (developed by Oracle) has decided to throw an exception of Data Conversion Error. Therefore, you are strongly recommended to apply the connection string option of **convertzerodatetime=true**. Example:
+
+```
+server=localhost;user=root;pwd=mypwd;charset=utf8mb4;convertzerodatetime=true;
+```
\ No newline at end of file
diff --git a/source code/Test_ASPNET/Index.aspx b/source code/Test_ASPNET/Index.aspx
index 9e64568..58e4888 100644
--- a/source code/Test_ASPNET/Index.aspx
+++ b/source code/Test_ASPNET/Index.aspx
@@ -92,7 +92,7 @@
MySqlBackup.NET is a C# open source MySQL database backup and restore tool.
It is an alternative to MySqlDump.
It can be used in VB.NET projects too.
- Official Project Site: https://github.com/MySqlBackupNET/MySqlBackup.Net
+ Official Project Site: https://MySqlBackup.Net
Below is a simple demo for backing up and restoring a MySQL database:
@@ -112,7 +112,7 @@
MySQL Connection String:
- Example: server=www.mywebsite.com;user=root;password=qwerty;database=test;allowzerodatetime=true;connectiontimeout=60;
+ Example: server=www.mywebsite.com;user=root;password=qwerty;database=test;allowzerodatetime=true;sslmode=none;
@@ -142,19 +142,12 @@
Notes:
- All activities, inputs and outputs are not logged, saved and unable to be traced.
- - Data transmission of this website is not
- protected by secure connection (https).
-
- Data sent and received in human readable clear text form without encryption.
-
- You are advised not to use the service hosted here on your real and confidential website's database.
-
- Below are some of the online FREE MySQL Hosting, you may use it for testing here.
- The services hosted here are for testing purposes and for mini size of MySQL database only.
diff --git a/source code/Test_ASPNET/Index.aspx.cs b/source code/Test_ASPNET/Index.aspx.cs
index fcc5e5d..be88636 100644
--- a/source code/Test_ASPNET/Index.aspx.cs
+++ b/source code/Test_ASPNET/Index.aspx.cs
@@ -1,9 +1,9 @@
-using MySql.Data.MySqlClient;
-using System;
+using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Web.UI;
+using MySqlConnector;
namespace MySqlBackupASPNET
{
diff --git a/source code/Test_ASPNET/Test_ASP.NET.csproj b/source code/Test_ASPNET/Test_ASP.NET.csproj
index e289fe6..5aca917 100644
--- a/source code/Test_ASPNET/Test_ASP.NET.csproj
+++ b/source code/Test_ASPNET/Test_ASP.NET.csproj
@@ -43,41 +43,27 @@
false
-
- ..\packages\BouncyCastle.1.8.9\lib\BouncyCastle.Crypto.dll
-
-
- ..\packages\Google.Protobuf.3.18.1\lib\net45\Google.Protobuf.dll
-
-
- ..\packages\K4os.Compression.LZ4.1.2.13\lib\net46\K4os.Compression.LZ4.dll
- True
-
-
- ..\packages\K4os.Compression.LZ4.Streams.1.2.13\lib\net46\K4os.Compression.LZ4.Streams.dll
- True
-
-
- ..\packages\MySql.Data.8.0.26\lib\net452\MySql.Data.dll
-
-
- ..\packages\SSH.NET.2020.0.1\lib\net40\Renci.SshNet.dll
+
+ ..\packages\MySqlConnector.2.1.13\lib\net471\MySqlConnector.dll
- ..\packages\System.Buffers.4.5.1\lib\netstandard1.1\System.Buffers.dll
+ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
+
+ ..\packages\System.Diagnostics.DiagnosticSource.5.0.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
+
- ..\packages\System.Memory.4.5.4\lib\netstandard1.1\System.Memory.dll
+ ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll
@@ -86,6 +72,9 @@
..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll
+
+ ..\packages\System.Threading.Tasks.Extensions.4.3.0\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll
+
@@ -149,9 +138,9 @@
-
- {90412615-9eda-43e4-a704-ee08f5b62c5d}
- MySqlBackup%28MySql.Data%29
+
+ {280a4426-14cc-4a20-85f7-2f8e863a9977}
+ MySqlBackup%28MySqlConnector%29
diff --git a/source code/Test_ASPNET/Web.config b/source code/Test_ASPNET/Web.config
index a62ab0b..956e984 100644
--- a/source code/Test_ASPNET/Web.config
+++ b/source code/Test_ASPNET/Web.config
@@ -1,4 +1,4 @@
-
+
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/source code/Test_ASPNET/packages.config b/source code/Test_ASPNET/packages.config
index 00c6e8e..960282d 100644
--- a/source code/Test_ASPNET/packages.config
+++ b/source code/Test_ASPNET/packages.config
@@ -1,14 +1,10 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
\ No newline at end of file
diff --git a/source code/Test_WinForm/packages.config b/source code/Test_WinForm/packages.config
deleted file mode 100644
index a7ff2ac..0000000
--- a/source code/Test_WinForm/packages.config
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/source code/Test_WinForm_DevartExpress/App.config b/source code/Test_WinForm_DevartExpress/App.config
index 53e5358..ee61b7e 100644
--- a/source code/Test_WinForm_DevartExpress/App.config
+++ b/source code/Test_WinForm_DevartExpress/App.config
@@ -1,7 +1,7 @@
-
+
@@ -13,6 +13,6 @@
-
+
diff --git a/source code/Test_WinForm_DevartExpress/CryptoExpress.cs b/source code/Test_WinForm_DevartExpress/CryptoExpress.cs
new file mode 100644
index 0000000..276cef9
--- /dev/null
+++ b/source code/Test_WinForm_DevartExpress/CryptoExpress.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Security.Cryptography;
+
+namespace System
+{
+ public class CryptoExpress
+ {
+ public static string Sha256Hash(byte[] ba)
+ {
+ byte[] ba2 = SHA256CryptoServiceProvider.Create().ComputeHash(ba);
+ return Convert.ToBase64String(ba2);
+ }
+
+ public static string RandomString(int size)
+ {
+ byte[] randBuffer = new byte[size + (10)];
+ RandomNumberGenerator.Create().GetBytes(randBuffer);
+ return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
+ }
+
+ public static string ConvertByteArrayToHexString(byte[] ba)
+ {
+ if (ba == null || ba.Length == 0)
+ return "";
+ // Method 1 (slower)
+ //return "0x"+ BitConverter.ToString(bytes).Replace("-", string.Empty);
+
+ // Method 2 (faster)
+ char[] c = new char[ba.Length * 2 + 2];
+ byte b;
+ c[0] = '0'; c[1] = 'x';
+ for (int y = 0, x = 2; y < ba.Length; ++y, ++x)
+ {
+ b = ((byte)(ba[y] >> 4));
+ c[x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
+ b = ((byte)(ba[y] & 0xF));
+ c[++x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
+ }
+ return new string(c);
+ }
+ }
+}
diff --git a/source code/Test_WinForm_DevartExpress/FormCompareFile.cs b/source code/Test_WinForm_DevartExpress/FormCompareFile.cs
index 667e4ed..6c9f072 100644
--- a/source code/Test_WinForm_DevartExpress/FormCompareFile.cs
+++ b/source code/Test_WinForm_DevartExpress/FormCompareFile.cs
@@ -43,7 +43,7 @@ bool GetHash(ref string file, ref string hash)
{
file = f.FileName;
byte[] ba = System.IO.File.ReadAllBytes(f.FileName);
- hash = System.Security.Cryptography.CryptoExpress.Sha256Hash(ba);
+ hash = CryptoExpress.Sha256Hash(ba);
return true;
}
return false;
diff --git a/source code/Test_WinForm_DevartExpress/FormTestViewDependencies.cs b/source code/Test_WinForm_DevartExpress/FormTestViewDependencies.cs
index 1dfecd0..bc0e319 100644
--- a/source code/Test_WinForm_DevartExpress/FormTestViewDependencies.cs
+++ b/source code/Test_WinForm_DevartExpress/FormTestViewDependencies.cs
@@ -3,7 +3,7 @@
using System.ComponentModel;
using System.Data;
using System.Drawing;
-using System.Linq;
+
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
diff --git a/source code/Test_WinForm_DevartExpress/FormToolCreateSampleTable.cs b/source code/Test_WinForm_DevartExpress/FormToolCreateSampleTable.cs
index 44f3746..0771366 100644
--- a/source code/Test_WinForm_DevartExpress/FormToolCreateSampleTable.cs
+++ b/source code/Test_WinForm_DevartExpress/FormToolCreateSampleTable.cs
@@ -1,7 +1,6 @@
using Devart.Data.MySql;
using System;
using System.ComponentModel;
-using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
diff --git a/source code/Test_WinForm_DevartExpress/Program.cs b/source code/Test_WinForm_DevartExpress/Program.cs
index e76fe69..498e236 100644
--- a/source code/Test_WinForm_DevartExpress/Program.cs
+++ b/source code/Test_WinForm_DevartExpress/Program.cs
@@ -5,8 +5,8 @@ namespace MySqlBackupTestApp
{
static class Program
{
- public static string Version = "V2.3.6";
- public static string DateVersion = "October 17, 2021";
+ public static string Version = Devart.Data.MySql.MySqlBackup.Version;
+ public static string DateVersion = "October 18, 2022";
private static string _connectionString = string.Empty;
diff --git a/source code/Test_WinForm_DevartExpress/Properties/Settings.Designer.cs b/source code/Test_WinForm_DevartExpress/Properties/Settings.Designer.cs
index 7e42496..9a60c78 100644
--- a/source code/Test_WinForm_DevartExpress/Properties/Settings.Designer.cs
+++ b/source code/Test_WinForm_DevartExpress/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace TestApp_DevartExpressMySql.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/source code/Test_WinForm_DevartExpress/Test_WinForm_DevartExpress.csproj b/source code/Test_WinForm_DevartExpress/Test_WinForm_DevartExpress.csproj
index c782df9..bc95352 100644
--- a/source code/Test_WinForm_DevartExpress/Test_WinForm_DevartExpress.csproj
+++ b/source code/Test_WinForm_DevartExpress/Test_WinForm_DevartExpress.csproj
@@ -8,7 +8,7 @@
WinExe
TestApp_DevartExpressMySql
TestApp_DevartExpressMySql
- v4.5.2
+ v4.8
512
true
true
@@ -37,11 +37,11 @@
logo.ico
-
- ..\packages\dotConnect.Express.for.MySQL.8.19.1985\lib\Devart.Data.dll
+
+ ..\packages\dotConnect.Express.for.MySQL.9.0.0\lib\Devart.Data.dll
-
- ..\packages\dotConnect.Express.for.MySQL.8.19.1985\lib\Devart.Data.MySql.dll
+
+ ..\packages\dotConnect.Express.for.MySQL.9.0.0\lib\Devart.Data.MySql.dll
@@ -56,6 +56,7 @@
+
Form
diff --git a/source code/Test_WinForm_DevartExpress/packages.config b/source code/Test_WinForm_DevartExpress/packages.config
index 1744907..bfffe81 100644
--- a/source code/Test_WinForm_DevartExpress/packages.config
+++ b/source code/Test_WinForm_DevartExpress/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/source code/Test_WinForm_MySqlConnector/App.config b/source code/Test_WinForm_MySqlConnector/App.config
index a45621e..765380d 100644
--- a/source code/Test_WinForm_MySqlConnector/App.config
+++ b/source code/Test_WinForm_MySqlConnector/App.config
@@ -1,7 +1,7 @@
-
+
@@ -11,7 +11,7 @@
-
+
@@ -19,7 +19,11 @@
-
+
+
+
+
+
diff --git a/source code/Test_WinForm_MySqlConnector/CryptoExpress.cs b/source code/Test_WinForm_MySqlConnector/CryptoExpress.cs
new file mode 100644
index 0000000..276cef9
--- /dev/null
+++ b/source code/Test_WinForm_MySqlConnector/CryptoExpress.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Security.Cryptography;
+
+namespace System
+{
+ public class CryptoExpress
+ {
+ public static string Sha256Hash(byte[] ba)
+ {
+ byte[] ba2 = SHA256CryptoServiceProvider.Create().ComputeHash(ba);
+ return Convert.ToBase64String(ba2);
+ }
+
+ public static string RandomString(int size)
+ {
+ byte[] randBuffer = new byte[size + (10)];
+ RandomNumberGenerator.Create().GetBytes(randBuffer);
+ return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
+ }
+
+ public static string ConvertByteArrayToHexString(byte[] ba)
+ {
+ if (ba == null || ba.Length == 0)
+ return "";
+ // Method 1 (slower)
+ //return "0x"+ BitConverter.ToString(bytes).Replace("-", string.Empty);
+
+ // Method 2 (faster)
+ char[] c = new char[ba.Length * 2 + 2];
+ byte b;
+ c[0] = '0'; c[1] = 'x';
+ for (int y = 0, x = 2; y < ba.Length; ++y, ++x)
+ {
+ b = ((byte)(ba[y] >> 4));
+ c[x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
+ b = ((byte)(ba[y] & 0xF));
+ c[++x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
+ }
+ return new string(c);
+ }
+ }
+}
diff --git a/source code/Test_WinForm_MySqlConnector/FormCompareFile.cs b/source code/Test_WinForm_MySqlConnector/FormCompareFile.cs
index 667e4ed..6c9f072 100644
--- a/source code/Test_WinForm_MySqlConnector/FormCompareFile.cs
+++ b/source code/Test_WinForm_MySqlConnector/FormCompareFile.cs
@@ -43,7 +43,7 @@ bool GetHash(ref string file, ref string hash)
{
file = f.FileName;
byte[] ba = System.IO.File.ReadAllBytes(f.FileName);
- hash = System.Security.Cryptography.CryptoExpress.Sha256Hash(ba);
+ hash = CryptoExpress.Sha256Hash(ba);
return true;
}
return false;
diff --git a/source code/Test_WinForm_MySqlConnector/FormTestViewDependencies.cs b/source code/Test_WinForm_MySqlConnector/FormTestViewDependencies.cs
index 77d6635..9938a73 100644
--- a/source code/Test_WinForm_MySqlConnector/FormTestViewDependencies.cs
+++ b/source code/Test_WinForm_MySqlConnector/FormTestViewDependencies.cs
@@ -3,7 +3,7 @@
using System.ComponentModel;
using System.Data;
using System.Drawing;
-using System.Linq;
+
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
diff --git a/source code/Test_WinForm_MySqlConnector/FormToolCreateSampleTable.cs b/source code/Test_WinForm_MySqlConnector/FormToolCreateSampleTable.cs
index 84879b9..e6e1b53 100644
--- a/source code/Test_WinForm_MySqlConnector/FormToolCreateSampleTable.cs
+++ b/source code/Test_WinForm_MySqlConnector/FormToolCreateSampleTable.cs
@@ -1,7 +1,6 @@
using MySqlConnector;
using System;
using System.ComponentModel;
-using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
diff --git a/source code/Test_WinForm_MySqlConnector/Program.cs b/source code/Test_WinForm_MySqlConnector/Program.cs
index e76fe69..00f19e6 100644
--- a/source code/Test_WinForm_MySqlConnector/Program.cs
+++ b/source code/Test_WinForm_MySqlConnector/Program.cs
@@ -1,12 +1,13 @@
-using System;
+using MySqlConnector;
+using System;
using System.Windows.Forms;
namespace MySqlBackupTestApp
{
static class Program
{
- public static string Version = "V2.3.6";
- public static string DateVersion = "October 17, 2021";
+ public static string Version = MySqlBackup.Version;
+ public static string DateVersion = "October 18, 2022";
private static string _connectionString = string.Empty;
diff --git a/source code/Test_WinForm_MySqlConnector/Properties/Resources.Designer.cs b/source code/Test_WinForm_MySqlConnector/Properties/Resources.Designer.cs
index 5c29f7e..b58081d 100644
--- a/source code/Test_WinForm_MySqlConnector/Properties/Resources.Designer.cs
+++ b/source code/Test_WinForm_MySqlConnector/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace Test_WinForm_MySqlConnector.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
diff --git a/source code/Test_WinForm_MySqlConnector/Properties/Settings.Designer.cs b/source code/Test_WinForm_MySqlConnector/Properties/Settings.Designer.cs
index 24ca71b..2ba7e83 100644
--- a/source code/Test_WinForm_MySqlConnector/Properties/Settings.Designer.cs
+++ b/source code/Test_WinForm_MySqlConnector/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace Test_WinForm_MySqlConnector.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/source code/Test_WinForm_MySqlConnector/Test_WinForm_MySqlConnector.csproj b/source code/Test_WinForm_MySqlConnector/Test_WinForm_MySqlConnector.csproj
index db20301..538b74d 100644
--- a/source code/Test_WinForm_MySqlConnector/Test_WinForm_MySqlConnector.csproj
+++ b/source code/Test_WinForm_MySqlConnector/Test_WinForm_MySqlConnector.csproj
@@ -8,7 +8,7 @@
WinExe
Test_WinForm_MySqlConnector
Test_WinForm_MySqlConnector
- v4.5.2
+ v4.8
512
true
true
@@ -40,29 +40,29 @@
logo.ico
-
- ..\packages\MySqlConnector.1.3.13\lib\net45\MySqlConnector.dll
+
+ ..\packages\MySqlConnector.2.1.13\lib\net471\MySqlConnector.dll
- ..\packages\System.Buffers.4.5.1\lib\netstandard1.1\System.Buffers.dll
+ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
-
- ..\packages\System.Memory.4.5.4\lib\netstandard1.1\System.Memory.dll
+
+ ..\packages\System.Diagnostics.DiagnosticSource.6.0.0\lib\net461\System.Diagnostics.DiagnosticSource.dll
+
+
+ ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
- ..\packages\System.Numerics.Vectors.4.5.0\lib\portable-net45+win8+wp8+wpa81\System.Numerics.Vectors.dll
-
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
-
- ..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
- ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\portable-net45+win8+wp8+wpa81\System.Threading.Tasks.Extensions.dll
+ ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll
@@ -76,6 +76,7 @@
+
Form
diff --git a/source code/Test_WinForm_MySqlConnector/packages.config b/source code/Test_WinForm_MySqlConnector/packages.config
index fe07994..f8ec547 100644
--- a/source code/Test_WinForm_MySqlConnector/packages.config
+++ b/source code/Test_WinForm_MySqlConnector/packages.config
@@ -1,12 +1,10 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source code/Test_WinForm_MySqlData/CryptoExpress.cs b/source code/Test_WinForm_MySqlData/CryptoExpress.cs
new file mode 100644
index 0000000..276cef9
--- /dev/null
+++ b/source code/Test_WinForm_MySqlData/CryptoExpress.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Security.Cryptography;
+
+namespace System
+{
+ public class CryptoExpress
+ {
+ public static string Sha256Hash(byte[] ba)
+ {
+ byte[] ba2 = SHA256CryptoServiceProvider.Create().ComputeHash(ba);
+ return Convert.ToBase64String(ba2);
+ }
+
+ public static string RandomString(int size)
+ {
+ byte[] randBuffer = new byte[size + (10)];
+ RandomNumberGenerator.Create().GetBytes(randBuffer);
+ return System.Convert.ToBase64String(randBuffer).Replace("/", string.Empty).Replace("+", string.Empty).Replace("=", string.Empty).Remove(size);
+ }
+
+ public static string ConvertByteArrayToHexString(byte[] ba)
+ {
+ if (ba == null || ba.Length == 0)
+ return "";
+ // Method 1 (slower)
+ //return "0x"+ BitConverter.ToString(bytes).Replace("-", string.Empty);
+
+ // Method 2 (faster)
+ char[] c = new char[ba.Length * 2 + 2];
+ byte b;
+ c[0] = '0'; c[1] = 'x';
+ for (int y = 0, x = 2; y < ba.Length; ++y, ++x)
+ {
+ b = ((byte)(ba[y] >> 4));
+ c[x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
+ b = ((byte)(ba[y] & 0xF));
+ c[++x] = (char)(b > 9 ? b + 0x37 : b + 0x30);
+ }
+ return new string(c);
+ }
+ }
+}
diff --git a/source code/Test_WinForm/FormAbout.Designer.cs b/source code/Test_WinForm_MySqlData/FormAbout.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormAbout.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormAbout.Designer.cs
diff --git a/source code/Test_WinForm/FormAbout.cs b/source code/Test_WinForm_MySqlData/FormAbout.cs
similarity index 100%
rename from source code/Test_WinForm/FormAbout.cs
rename to source code/Test_WinForm_MySqlData/FormAbout.cs
diff --git a/source code/Test_WinForm/FormAbout.resx b/source code/Test_WinForm_MySqlData/FormAbout.resx
similarity index 100%
rename from source code/Test_WinForm/FormAbout.resx
rename to source code/Test_WinForm_MySqlData/FormAbout.resx
diff --git a/source code/Test_WinForm/FormCompareFile.Designer.cs b/source code/Test_WinForm_MySqlData/FormCompareFile.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormCompareFile.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormCompareFile.Designer.cs
diff --git a/source code/Test_WinForm/FormCompareFile.cs b/source code/Test_WinForm_MySqlData/FormCompareFile.cs
similarity index 96%
rename from source code/Test_WinForm/FormCompareFile.cs
rename to source code/Test_WinForm_MySqlData/FormCompareFile.cs
index 667e4ed..fcc9e9f 100644
--- a/source code/Test_WinForm/FormCompareFile.cs
+++ b/source code/Test_WinForm_MySqlData/FormCompareFile.cs
@@ -1,5 +1,6 @@
using System;
using System.Drawing;
+using System.Security.Cryptography;
using System.Windows.Forms;
namespace MySqlBackupTestApp
@@ -43,7 +44,8 @@ bool GetHash(ref string file, ref string hash)
{
file = f.FileName;
byte[] ba = System.IO.File.ReadAllBytes(f.FileName);
- hash = System.Security.Cryptography.CryptoExpress.Sha256Hash(ba);
+ hash = System.CryptoExpress.Sha256Hash(ba);
+
return true;
}
return false;
diff --git a/source code/Test_WinForm/FormCompareFile.resx b/source code/Test_WinForm_MySqlData/FormCompareFile.resx
similarity index 100%
rename from source code/Test_WinForm/FormCompareFile.resx
rename to source code/Test_WinForm_MySqlData/FormCompareFile.resx
diff --git a/source code/Test_WinForm/FormConnStringBuilder.Designer.cs b/source code/Test_WinForm_MySqlData/FormConnStringBuilder.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormConnStringBuilder.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormConnStringBuilder.Designer.cs
diff --git a/source code/Test_WinForm/FormConnStringBuilder.cs b/source code/Test_WinForm_MySqlData/FormConnStringBuilder.cs
similarity index 100%
rename from source code/Test_WinForm/FormConnStringBuilder.cs
rename to source code/Test_WinForm_MySqlData/FormConnStringBuilder.cs
diff --git a/source code/Test_WinForm/FormConnStringBuilder.resx b/source code/Test_WinForm_MySqlData/FormConnStringBuilder.resx
similarity index 100%
rename from source code/Test_WinForm/FormConnStringBuilder.resx
rename to source code/Test_WinForm_MySqlData/FormConnStringBuilder.resx
diff --git a/source code/Test_WinForm/FormDatabaseInfo.Designer.cs b/source code/Test_WinForm_MySqlData/FormDatabaseInfo.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormDatabaseInfo.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormDatabaseInfo.Designer.cs
diff --git a/source code/Test_WinForm/FormDatabaseInfo.cs b/source code/Test_WinForm_MySqlData/FormDatabaseInfo.cs
similarity index 100%
rename from source code/Test_WinForm/FormDatabaseInfo.cs
rename to source code/Test_WinForm_MySqlData/FormDatabaseInfo.cs
diff --git a/source code/Test_WinForm/FormDatabaseInfo.resx b/source code/Test_WinForm_MySqlData/FormDatabaseInfo.resx
similarity index 100%
rename from source code/Test_WinForm/FormDatabaseInfo.resx
rename to source code/Test_WinForm_MySqlData/FormDatabaseInfo.resx
diff --git a/source code/Test_WinForm/FormDecryptOldDumpFile.Designer.cs b/source code/Test_WinForm_MySqlData/FormDecryptOldDumpFile.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormDecryptOldDumpFile.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormDecryptOldDumpFile.Designer.cs
diff --git a/source code/Test_WinForm/FormDecryptOldDumpFile.cs b/source code/Test_WinForm_MySqlData/FormDecryptOldDumpFile.cs
similarity index 100%
rename from source code/Test_WinForm/FormDecryptOldDumpFile.cs
rename to source code/Test_WinForm_MySqlData/FormDecryptOldDumpFile.cs
diff --git a/source code/Test_WinForm/FormDecryptOldDumpFile.resx b/source code/Test_WinForm_MySqlData/FormDecryptOldDumpFile.resx
similarity index 100%
rename from source code/Test_WinForm/FormDecryptOldDumpFile.resx
rename to source code/Test_WinForm_MySqlData/FormDecryptOldDumpFile.resx
diff --git a/source code/Test_WinForm/FormDumpFileViewer.Designer.cs b/source code/Test_WinForm_MySqlData/FormDumpFileViewer.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormDumpFileViewer.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormDumpFileViewer.Designer.cs
diff --git a/source code/Test_WinForm/FormDumpFileViewer.cs b/source code/Test_WinForm_MySqlData/FormDumpFileViewer.cs
similarity index 100%
rename from source code/Test_WinForm/FormDumpFileViewer.cs
rename to source code/Test_WinForm_MySqlData/FormDumpFileViewer.cs
diff --git a/source code/Test_WinForm/FormDumpFileViewer.resx b/source code/Test_WinForm_MySqlData/FormDumpFileViewer.resx
similarity index 100%
rename from source code/Test_WinForm/FormDumpFileViewer.resx
rename to source code/Test_WinForm_MySqlData/FormDumpFileViewer.resx
diff --git a/source code/Test_WinForm/FormMain.Designer.cs b/source code/Test_WinForm_MySqlData/FormMain.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormMain.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormMain.Designer.cs
diff --git a/source code/Test_WinForm/FormMain.cs b/source code/Test_WinForm_MySqlData/FormMain.cs
similarity index 100%
rename from source code/Test_WinForm/FormMain.cs
rename to source code/Test_WinForm_MySqlData/FormMain.cs
diff --git a/source code/Test_WinForm/FormMain.resx b/source code/Test_WinForm_MySqlData/FormMain.resx
similarity index 100%
rename from source code/Test_WinForm/FormMain.resx
rename to source code/Test_WinForm_MySqlData/FormMain.resx
diff --git a/source code/Test_WinForm/FormQueryBrowser.Designer.cs b/source code/Test_WinForm_MySqlData/FormQueryBrowser.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormQueryBrowser.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormQueryBrowser.Designer.cs
diff --git a/source code/Test_WinForm/FormQueryBrowser.cs b/source code/Test_WinForm_MySqlData/FormQueryBrowser.cs
similarity index 100%
rename from source code/Test_WinForm/FormQueryBrowser.cs
rename to source code/Test_WinForm_MySqlData/FormQueryBrowser.cs
diff --git a/source code/Test_WinForm/FormQueryBrowser.resx b/source code/Test_WinForm_MySqlData/FormQueryBrowser.resx
similarity index 100%
rename from source code/Test_WinForm/FormQueryBrowser.resx
rename to source code/Test_WinForm_MySqlData/FormQueryBrowser.resx
diff --git a/source code/Test_WinForm/FormQueryBrowser2.Designer.cs b/source code/Test_WinForm_MySqlData/FormQueryBrowser2.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormQueryBrowser2.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormQueryBrowser2.Designer.cs
diff --git a/source code/Test_WinForm/FormQueryBrowser2.cs b/source code/Test_WinForm_MySqlData/FormQueryBrowser2.cs
similarity index 100%
rename from source code/Test_WinForm/FormQueryBrowser2.cs
rename to source code/Test_WinForm_MySqlData/FormQueryBrowser2.cs
diff --git a/source code/Test_WinForm/FormQueryBrowser2.resx b/source code/Test_WinForm_MySqlData/FormQueryBrowser2.resx
similarity index 100%
rename from source code/Test_WinForm/FormQueryBrowser2.resx
rename to source code/Test_WinForm_MySqlData/FormQueryBrowser2.resx
diff --git a/source code/Test_WinForm/FormReference.Designer.cs b/source code/Test_WinForm_MySqlData/FormReference.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormReference.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormReference.Designer.cs
diff --git a/source code/Test_WinForm/FormReference.cs b/source code/Test_WinForm_MySqlData/FormReference.cs
similarity index 100%
rename from source code/Test_WinForm/FormReference.cs
rename to source code/Test_WinForm_MySqlData/FormReference.cs
diff --git a/source code/Test_WinForm/FormReference.resx b/source code/Test_WinForm_MySqlData/FormReference.resx
similarity index 100%
rename from source code/Test_WinForm/FormReference.resx
rename to source code/Test_WinForm_MySqlData/FormReference.resx
diff --git a/source code/Test_WinForm/FormTestBlob.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestBlob.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestBlob.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestBlob.Designer.cs
diff --git a/source code/Test_WinForm/FormTestBlob.cs b/source code/Test_WinForm_MySqlData/FormTestBlob.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestBlob.cs
rename to source code/Test_WinForm_MySqlData/FormTestBlob.cs
diff --git a/source code/Test_WinForm/FormTestBlob.resx b/source code/Test_WinForm_MySqlData/FormTestBlob.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestBlob.resx
rename to source code/Test_WinForm_MySqlData/FormTestBlob.resx
diff --git a/source code/Test_WinForm/FormTestCustomTablesExport.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestCustomTablesExport.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestCustomTablesExport.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestCustomTablesExport.Designer.cs
diff --git a/source code/Test_WinForm/FormTestCustomTablesExport.cs b/source code/Test_WinForm_MySqlData/FormTestCustomTablesExport.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestCustomTablesExport.cs
rename to source code/Test_WinForm_MySqlData/FormTestCustomTablesExport.cs
diff --git a/source code/Test_WinForm/FormTestCustomTablesExport.resx b/source code/Test_WinForm_MySqlData/FormTestCustomTablesExport.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestCustomTablesExport.resx
rename to source code/Test_WinForm_MySqlData/FormTestCustomTablesExport.resx
diff --git a/source code/Test_WinForm/FormTestEncryptDecrypt.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestEncryptDecrypt.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestEncryptDecrypt.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestEncryptDecrypt.Designer.cs
diff --git a/source code/Test_WinForm/FormTestEncryptDecrypt.cs b/source code/Test_WinForm_MySqlData/FormTestEncryptDecrypt.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestEncryptDecrypt.cs
rename to source code/Test_WinForm_MySqlData/FormTestEncryptDecrypt.cs
diff --git a/source code/Test_WinForm/FormTestEncryptDecrypt.resx b/source code/Test_WinForm_MySqlData/FormTestEncryptDecrypt.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestEncryptDecrypt.resx
rename to source code/Test_WinForm_MySqlData/FormTestEncryptDecrypt.resx
diff --git a/source code/Test_WinForm/FormTestExImWithOptions.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestExImWithOptions.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExImWithOptions.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestExImWithOptions.Designer.cs
diff --git a/source code/Test_WinForm/FormTestExImWithOptions.cs b/source code/Test_WinForm_MySqlData/FormTestExImWithOptions.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExImWithOptions.cs
rename to source code/Test_WinForm_MySqlData/FormTestExImWithOptions.cs
diff --git a/source code/Test_WinForm/FormTestExImWithOptions.resx b/source code/Test_WinForm_MySqlData/FormTestExImWithOptions.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestExImWithOptions.resx
rename to source code/Test_WinForm_MySqlData/FormTestExImWithOptions.resx
diff --git a/source code/Test_WinForm/FormTestExcludeTables.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestExcludeTables.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExcludeTables.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestExcludeTables.Designer.cs
diff --git a/source code/Test_WinForm/FormTestExcludeTables.cs b/source code/Test_WinForm_MySqlData/FormTestExcludeTables.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExcludeTables.cs
rename to source code/Test_WinForm_MySqlData/FormTestExcludeTables.cs
diff --git a/source code/Test_WinForm/FormTestExcludeTables.resx b/source code/Test_WinForm_MySqlData/FormTestExcludeTables.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestExcludeTables.resx
rename to source code/Test_WinForm_MySqlData/FormTestExcludeTables.resx
diff --git a/source code/Test_WinForm/FormTestExportImportMemory.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestExportImportMemory.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExportImportMemory.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestExportImportMemory.Designer.cs
diff --git a/source code/Test_WinForm/FormTestExportImportMemory.cs b/source code/Test_WinForm_MySqlData/FormTestExportImportMemory.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExportImportMemory.cs
rename to source code/Test_WinForm_MySqlData/FormTestExportImportMemory.cs
diff --git a/source code/Test_WinForm/FormTestExportImportMemory.resx b/source code/Test_WinForm_MySqlData/FormTestExportImportMemory.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestExportImportMemory.resx
rename to source code/Test_WinForm_MySqlData/FormTestExportImportMemory.resx
diff --git a/source code/Test_WinForm/FormTestExportImportString.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestExportImportString.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExportImportString.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestExportImportString.Designer.cs
diff --git a/source code/Test_WinForm/FormTestExportImportString.cs b/source code/Test_WinForm_MySqlData/FormTestExportImportString.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExportImportString.cs
rename to source code/Test_WinForm_MySqlData/FormTestExportImportString.cs
diff --git a/source code/Test_WinForm/FormTestExportImportString.resx b/source code/Test_WinForm_MySqlData/FormTestExportImportString.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestExportImportString.resx
rename to source code/Test_WinForm_MySqlData/FormTestExportImportString.resx
diff --git a/source code/Test_WinForm/FormTestExportProgresBar.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestExportProgresBar.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExportProgresBar.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestExportProgresBar.Designer.cs
diff --git a/source code/Test_WinForm/FormTestExportProgresBar.cs b/source code/Test_WinForm_MySqlData/FormTestExportProgresBar.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestExportProgresBar.cs
rename to source code/Test_WinForm_MySqlData/FormTestExportProgresBar.cs
diff --git a/source code/Test_WinForm/FormTestExportProgresBar.resx b/source code/Test_WinForm_MySqlData/FormTestExportProgresBar.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestExportProgresBar.resx
rename to source code/Test_WinForm_MySqlData/FormTestExportProgresBar.resx
diff --git a/source code/Test_WinForm/FormTestImportCaptureError.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestImportCaptureError.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestImportCaptureError.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestImportCaptureError.Designer.cs
diff --git a/source code/Test_WinForm/FormTestImportCaptureError.cs b/source code/Test_WinForm_MySqlData/FormTestImportCaptureError.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestImportCaptureError.cs
rename to source code/Test_WinForm_MySqlData/FormTestImportCaptureError.cs
diff --git a/source code/Test_WinForm/FormTestImportCaptureError.resx b/source code/Test_WinForm_MySqlData/FormTestImportCaptureError.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestImportCaptureError.resx
rename to source code/Test_WinForm_MySqlData/FormTestImportCaptureError.resx
diff --git a/source code/Test_WinForm/FormTestImportProgressReport.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestImportProgressReport.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestImportProgressReport.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestImportProgressReport.Designer.cs
diff --git a/source code/Test_WinForm/FormTestImportProgressReport.cs b/source code/Test_WinForm_MySqlData/FormTestImportProgressReport.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestImportProgressReport.cs
rename to source code/Test_WinForm_MySqlData/FormTestImportProgressReport.cs
diff --git a/source code/Test_WinForm/FormTestImportProgressReport.resx b/source code/Test_WinForm_MySqlData/FormTestImportProgressReport.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestImportProgressReport.resx
rename to source code/Test_WinForm_MySqlData/FormTestImportProgressReport.resx
diff --git a/source code/Test_WinForm/FormTestModifyHeadersFooters.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestModifyHeadersFooters.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestModifyHeadersFooters.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestModifyHeadersFooters.Designer.cs
diff --git a/source code/Test_WinForm/FormTestModifyHeadersFooters.cs b/source code/Test_WinForm_MySqlData/FormTestModifyHeadersFooters.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestModifyHeadersFooters.cs
rename to source code/Test_WinForm_MySqlData/FormTestModifyHeadersFooters.cs
diff --git a/source code/Test_WinForm/FormTestModifyHeadersFooters.resx b/source code/Test_WinForm_MySqlData/FormTestModifyHeadersFooters.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestModifyHeadersFooters.resx
rename to source code/Test_WinForm_MySqlData/FormTestModifyHeadersFooters.resx
diff --git a/source code/Test_WinForm/FormTestSimple.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestSimple.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestSimple.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestSimple.Designer.cs
diff --git a/source code/Test_WinForm/FormTestSimple.cs b/source code/Test_WinForm_MySqlData/FormTestSimple.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestSimple.cs
rename to source code/Test_WinForm_MySqlData/FormTestSimple.cs
diff --git a/source code/Test_WinForm/FormTestSimple.resx b/source code/Test_WinForm_MySqlData/FormTestSimple.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestSimple.resx
rename to source code/Test_WinForm_MySqlData/FormTestSimple.resx
diff --git a/source code/Test_WinForm/FormTestViewDependencies.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestViewDependencies.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestViewDependencies.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestViewDependencies.Designer.cs
diff --git a/source code/Test_WinForm/FormTestViewDependencies.cs b/source code/Test_WinForm_MySqlData/FormTestViewDependencies.cs
similarity index 99%
rename from source code/Test_WinForm/FormTestViewDependencies.cs
rename to source code/Test_WinForm_MySqlData/FormTestViewDependencies.cs
index 7f83304..77824d4 100644
--- a/source code/Test_WinForm/FormTestViewDependencies.cs
+++ b/source code/Test_WinForm_MySqlData/FormTestViewDependencies.cs
@@ -3,7 +3,7 @@
using System.ComponentModel;
using System.Data;
using System.Drawing;
-using System.Linq;
+
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
diff --git a/source code/Test_WinForm/FormTestViewDependencies.resx b/source code/Test_WinForm_MySqlData/FormTestViewDependencies.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestViewDependencies.resx
rename to source code/Test_WinForm_MySqlData/FormTestViewDependencies.resx
diff --git a/source code/Test_WinForm/FormTestZip.Designer.cs b/source code/Test_WinForm_MySqlData/FormTestZip.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestZip.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormTestZip.Designer.cs
diff --git a/source code/Test_WinForm/FormTestZip.cs b/source code/Test_WinForm_MySqlData/FormTestZip.cs
similarity index 100%
rename from source code/Test_WinForm/FormTestZip.cs
rename to source code/Test_WinForm_MySqlData/FormTestZip.cs
diff --git a/source code/Test_WinForm/FormTestZip.resx b/source code/Test_WinForm_MySqlData/FormTestZip.resx
similarity index 100%
rename from source code/Test_WinForm/FormTestZip.resx
rename to source code/Test_WinForm_MySqlData/FormTestZip.resx
diff --git a/source code/Test_WinForm/FormToolCreateSampleTable.Designer.cs b/source code/Test_WinForm_MySqlData/FormToolCreateSampleTable.Designer.cs
similarity index 100%
rename from source code/Test_WinForm/FormToolCreateSampleTable.Designer.cs
rename to source code/Test_WinForm_MySqlData/FormToolCreateSampleTable.Designer.cs
diff --git a/source code/Test_WinForm/FormToolCreateSampleTable.cs b/source code/Test_WinForm_MySqlData/FormToolCreateSampleTable.cs
similarity index 99%
rename from source code/Test_WinForm/FormToolCreateSampleTable.cs
rename to source code/Test_WinForm_MySqlData/FormToolCreateSampleTable.cs
index 9895b62..039f044 100644
--- a/source code/Test_WinForm/FormToolCreateSampleTable.cs
+++ b/source code/Test_WinForm_MySqlData/FormToolCreateSampleTable.cs
@@ -1,7 +1,6 @@
using MySql.Data.MySqlClient;
using System;
using System.ComponentModel;
-using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
diff --git a/source code/Test_WinForm/FormToolCreateSampleTable.resx b/source code/Test_WinForm_MySqlData/FormToolCreateSampleTable.resx
similarity index 100%
rename from source code/Test_WinForm/FormToolCreateSampleTable.resx
rename to source code/Test_WinForm_MySqlData/FormToolCreateSampleTable.resx
diff --git a/source code/Test_WinForm/HtmlExpress.cs b/source code/Test_WinForm_MySqlData/HtmlExpress.cs
similarity index 100%
rename from source code/Test_WinForm/HtmlExpress.cs
rename to source code/Test_WinForm_MySqlData/HtmlExpress.cs
diff --git a/source code/Test_WinForm/Program.cs b/source code/Test_WinForm_MySqlData/Program.cs
similarity index 93%
rename from source code/Test_WinForm/Program.cs
rename to source code/Test_WinForm_MySqlData/Program.cs
index e76fe69..e7f60d5 100644
--- a/source code/Test_WinForm/Program.cs
+++ b/source code/Test_WinForm_MySqlData/Program.cs
@@ -1,12 +1,13 @@
using System;
using System.Windows.Forms;
+using MySql.Data.MySqlClient;
namespace MySqlBackupTestApp
{
static class Program
{
- public static string Version = "V2.3.6";
- public static string DateVersion = "October 17, 2021";
+ public static string Version = MySqlBackup.Version;
+ public static string DateVersion = "October 18, 2022";
private static string _connectionString = string.Empty;
diff --git a/source code/Test_WinForm/Properties/AssemblyInfo.cs b/source code/Test_WinForm_MySqlData/Properties/AssemblyInfo.cs
similarity index 100%
rename from source code/Test_WinForm/Properties/AssemblyInfo.cs
rename to source code/Test_WinForm_MySqlData/Properties/AssemblyInfo.cs
diff --git a/source code/Test_WinForm/Properties/Resources.Designer.cs b/source code/Test_WinForm_MySqlData/Properties/Resources.Designer.cs
similarity index 98%
rename from source code/Test_WinForm/Properties/Resources.Designer.cs
rename to source code/Test_WinForm_MySqlData/Properties/Resources.Designer.cs
index 784ccd8..0ea4f56 100644
--- a/source code/Test_WinForm/Properties/Resources.Designer.cs
+++ b/source code/Test_WinForm_MySqlData/Properties/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace MySqlBackupTestApp.Properties {
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
diff --git a/source code/Test_WinForm/Properties/Resources.resx b/source code/Test_WinForm_MySqlData/Properties/Resources.resx
similarity index 100%
rename from source code/Test_WinForm/Properties/Resources.resx
rename to source code/Test_WinForm_MySqlData/Properties/Resources.resx
diff --git a/source code/Test_WinForm/Properties/Settings.Designer.cs b/source code/Test_WinForm_MySqlData/Properties/Settings.Designer.cs
similarity index 97%
rename from source code/Test_WinForm/Properties/Settings.Designer.cs
rename to source code/Test_WinForm_MySqlData/Properties/Settings.Designer.cs
index 80b9636..b2a77c7 100644
--- a/source code/Test_WinForm/Properties/Settings.Designer.cs
+++ b/source code/Test_WinForm_MySqlData/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace MySqlBackupTestApp.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
diff --git a/source code/Test_WinForm/Properties/Settings.settings b/source code/Test_WinForm_MySqlData/Properties/Settings.settings
similarity index 100%
rename from source code/Test_WinForm/Properties/Settings.settings
rename to source code/Test_WinForm_MySqlData/Properties/Settings.settings
diff --git a/source code/Test_WinForm/Resources/bullet_cross.png b/source code/Test_WinForm_MySqlData/Resources/bullet_cross.png
similarity index 100%
rename from source code/Test_WinForm/Resources/bullet_cross.png
rename to source code/Test_WinForm_MySqlData/Resources/bullet_cross.png
diff --git a/source code/Test_WinForm/Resources/disk.png b/source code/Test_WinForm_MySqlData/Resources/disk.png
similarity index 100%
rename from source code/Test_WinForm/Resources/disk.png
rename to source code/Test_WinForm_MySqlData/Resources/disk.png
diff --git a/source code/Test_WinForm/Resources/disk_edit.png b/source code/Test_WinForm_MySqlData/Resources/disk_edit.png
similarity index 100%
rename from source code/Test_WinForm/Resources/disk_edit.png
rename to source code/Test_WinForm_MySqlData/Resources/disk_edit.png
diff --git a/source code/Test_WinForm/Resources/folder.png b/source code/Test_WinForm_MySqlData/Resources/folder.png
similarity index 100%
rename from source code/Test_WinForm/Resources/folder.png
rename to source code/Test_WinForm_MySqlData/Resources/folder.png
diff --git a/source code/Test_WinForm/Resources/logo128.png b/source code/Test_WinForm_MySqlData/Resources/logo128.png
similarity index 100%
rename from source code/Test_WinForm/Resources/logo128.png
rename to source code/Test_WinForm_MySqlData/Resources/logo128.png
diff --git a/source code/Test_WinForm/Resources/q2.png b/source code/Test_WinForm_MySqlData/Resources/q2.png
similarity index 100%
rename from source code/Test_WinForm/Resources/q2.png
rename to source code/Test_WinForm_MySqlData/Resources/q2.png
diff --git a/source code/Test_WinForm/Test_WinForm.csproj b/source code/Test_WinForm_MySqlData/Test_WinForm_MySqlData.csproj
similarity index 89%
rename from source code/Test_WinForm/Test_WinForm.csproj
rename to source code/Test_WinForm_MySqlData/Test_WinForm_MySqlData.csproj
index 465d651..2cfafde 100644
--- a/source code/Test_WinForm/Test_WinForm.csproj
+++ b/source code/Test_WinForm_MySqlData/Test_WinForm_MySqlData.csproj
@@ -9,7 +9,7 @@
Properties
MySqlBackupTestApp
MySqlBackupTestApp
- v4.5.2
+ v4.8
512
@@ -54,28 +54,28 @@
logo.ico
-
- ..\packages\BouncyCastle.1.8.5\lib\BouncyCastle.Crypto.dll
+
+ ..\packages\Portable.BouncyCastle.1.9.0\lib\net40\BouncyCastle.Crypto.dll
-
- ..\packages\Google.Protobuf.3.14.0\lib\net45\Google.Protobuf.dll
+
+ ..\packages\Google.Protobuf.3.21.7\lib\net45\Google.Protobuf.dll
-
- ..\packages\K4os.Compression.LZ4.1.1.11\lib\net45\K4os.Compression.LZ4.dll
+
+ ..\packages\K4os.Compression.LZ4.1.2.16\lib\net46\K4os.Compression.LZ4.dll
-
- ..\packages\K4os.Compression.LZ4.Streams.1.1.11\lib\net45\K4os.Compression.LZ4.Streams.dll
+
+ ..\packages\K4os.Compression.LZ4.Streams.1.2.16\lib\net46\K4os.Compression.LZ4.Streams.dll
-
- ..\packages\K4os.Hash.xxHash.1.0.6\lib\net45\K4os.Hash.xxHash.dll
+
+ ..\packages\K4os.Hash.xxHash.1.0.7\lib\net46\K4os.Hash.xxHash.dll
-
- ..\packages\MySql.Data.8.0.26\lib\net452\MySql.Data.dll
+
+ ..\packages\MySql.Data.8.0.31\lib\net48\MySql.Data.dll
- ..\packages\System.Buffers.4.5.1\lib\netstandard1.1\System.Buffers.dll
+ ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll
@@ -86,24 +86,25 @@
-
- ..\packages\System.Memory.4.5.3\lib\netstandard1.1\System.Memory.dll
+
+ ..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll
+
+ ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll
+
+
+ ..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll
-
- ..\packages\MySql.Data.8.0.26\lib\net452\Ubiety.Dns.Core.dll
-
-
- ..\packages\MySql.Data.8.0.26\lib\net452\Zstandard.Net.dll
+
+ ..\packages\MySql.Data.8.0.31\lib\net48\ZstdNet.dll
+
Form
diff --git a/source code/Test_WinForm/ZipStorer.cs b/source code/Test_WinForm_MySqlData/ZipStorer.cs
similarity index 100%
rename from source code/Test_WinForm/ZipStorer.cs
rename to source code/Test_WinForm_MySqlData/ZipStorer.cs
diff --git a/source code/Test_WinForm/app.config b/source code/Test_WinForm_MySqlData/app.config
similarity index 57%
rename from source code/Test_WinForm/app.config
rename to source code/Test_WinForm_MySqlData/app.config
index 70c280b..3c9e43a 100644
--- a/source code/Test_WinForm/app.config
+++ b/source code/Test_WinForm_MySqlData/app.config
@@ -1,39 +1,43 @@
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
+
+
+
+
diff --git a/source code/Test_WinForm/logo.ico b/source code/Test_WinForm_MySqlData/logo.ico
similarity index 100%
rename from source code/Test_WinForm/logo.ico
rename to source code/Test_WinForm_MySqlData/logo.ico
diff --git a/source code/Test_WinForm_MySqlData/packages.config b/source code/Test_WinForm_MySqlData/packages.config
new file mode 100644
index 0000000..84f15b4
--- /dev/null
+++ b/source code/Test_WinForm_MySqlData/packages.config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
|