diff --git a/SQL-Tool/DatabaseWrapper.cs b/SQL-Tool/DatabaseWrapper.cs new file mode 100644 index 0000000..a002b14 --- /dev/null +++ b/SQL-Tool/DatabaseWrapper.cs @@ -0,0 +1,50 @@ +using System; +using System.Data; +using System.Text; + +namespace SQL_Tool +{ + class DatabaseWrapperInvalidQueryException : Exception + { + public override string Message { get; } = "No message :p"; + + public DatabaseWrapperInvalidQueryException() { } + public DatabaseWrapperInvalidQueryException(string message) + { + Message = message; + } + } + abstract class DatabaseWrapper + { + public abstract ConnectionState State { get; } + + protected DatabaseWrapper() { } + protected DatabaseWrapper(string connectionString) { } + protected DatabaseWrapper(string host, string database, string username, string password) { } + + public abstract int ExecuteCommand(string sqlStatement); + public abstract DataTable ExecuteQuery(string sqlStatement, DataTable dt = null); + public abstract long GetExecutionTime(); + + public string DataTableToString(DataTable dt) + { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < dt.Columns.Count;i++) + { + sb.Append(dt.Columns[i] + "\t"); + } + sb.Remove(sb.Length - 1, 1); + sb.AppendLine(); + foreach (DataRow row in dt.Rows) + { + for (int i = 0; i < dt.Columns.Count; i++) + { + sb.Append(row[i] + "\t"); + } + sb.Remove(sb.Length - 1, 1); + sb.AppendLine(); + } + return sb.ToString(); + } + } +} diff --git a/SQL-Tool/Form1.Designer.cs b/SQL-Tool/Form1.Designer.cs index 2c68702..bec67a1 100644 --- a/SQL-Tool/Form1.Designer.cs +++ b/SQL-Tool/Form1.Designer.cs @@ -28,12 +28,270 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.txtPassword = new System.Windows.Forms.TextBox(); + this.txtUser = new System.Windows.Forms.TextBox(); + this.txtDatabase = new System.Windows.Forms.TextBox(); + this.txtServer = new System.Windows.Forms.TextBox(); + this.btnSave = new System.Windows.Forms.Button(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.txtQuery = new System.Windows.Forms.TextBox(); + this.btnQuery = new System.Windows.Forms.Button(); + this.label8 = new System.Windows.Forms.Label(); + this.tabOutput = new System.Windows.Forms.TabControl(); + this.tabTextdarstellung = new System.Windows.Forms.TabPage(); + this.txtOutput = new System.Windows.Forms.TextBox(); + this.tabDataGridView = new System.Windows.Forms.TabPage(); + this.dataGridOutput = new System.Windows.Forms.DataGridView(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.tabOutput.SuspendLayout(); + this.tabTextdarstellung.SuspendLayout(); + this.tabDataGridView.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridOutput)).BeginInit(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.txtPassword); + this.groupBox1.Controls.Add(this.txtUser); + this.groupBox1.Controls.Add(this.txtDatabase); + this.groupBox1.Controls.Add(this.txtServer); + this.groupBox1.Controls.Add(this.btnSave); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(579, 68); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Verbindungsinformationen"; + // + // txtPassword + // + this.txtPassword.Location = new System.Drawing.Point(329, 37); + this.txtPassword.Name = "txtPassword"; + this.txtPassword.PasswordChar = '?'; + this.txtPassword.Size = new System.Drawing.Size(100, 20); + this.txtPassword.TabIndex = 8; + this.txtPassword.Text = "schule"; + // + // txtUser + // + this.txtUser.Location = new System.Drawing.Point(223, 37); + this.txtUser.Name = "txtUser"; + this.txtUser.Size = new System.Drawing.Size(100, 20); + this.txtUser.TabIndex = 7; + this.txtUser.Text = "schule-ro"; + // + // txtDatabase + // + this.txtDatabase.Location = new System.Drawing.Point(116, 37); + this.txtDatabase.Name = "txtDatabase"; + this.txtDatabase.Size = new System.Drawing.Size(100, 20); + this.txtDatabase.TabIndex = 6; + this.txtDatabase.Text = "schule"; + // + // txtServer + // + this.txtServer.Location = new System.Drawing.Point(10, 37); + this.txtServer.Name = "txtServer"; + this.txtServer.Size = new System.Drawing.Size(100, 20); + this.txtServer.TabIndex = 5; + this.txtServer.Text = "localhost"; + // + // btnSave + // + this.btnSave.Image = global::SQL_Tool.Properties.Resources.server_database; + this.btnSave.Location = new System.Drawing.Point(435, 20); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(138, 37); + this.btnSave.TabIndex = 4; + this.btnSave.Text = "Save"; + this.btnSave.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(326, 20); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 13); + this.label4.TabIndex = 3; + this.label4.Text = "Password"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(220, 20); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(29, 13); + this.label3.TabIndex = 2; + this.label3.Text = "User"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(113, 20); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(60, 13); + this.label2.TabIndex = 1; + this.label2.Text = "Datenbank"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(7, 20); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(38, 13); + this.label1.TabIndex = 0; + this.label1.Text = "Server"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.txtQuery); + this.groupBox2.Controls.Add(this.btnQuery); + this.groupBox2.Controls.Add(this.label8); + this.groupBox2.Location = new System.Drawing.Point(12, 86); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(579, 68); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Abfrage"; + // + // txtQuery + // + this.txtQuery.Location = new System.Drawing.Point(10, 19); + this.txtQuery.Name = "txtQuery"; + this.txtQuery.Size = new System.Drawing.Size(419, 20); + this.txtQuery.TabIndex = 5; + this.txtQuery.Text = "SELECT * FROM klasse"; + this.txtQuery.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.txtQuery_KeyPress); + // + // btnQuery + // + this.btnQuery.Image = global::SQL_Tool.Properties.Resources.arrow_right; + this.btnQuery.Location = new System.Drawing.Point(435, 20); + this.btnQuery.Name = "btnQuery"; + this.btnQuery.Size = new System.Drawing.Size(138, 37); + this.btnQuery.TabIndex = 4; + this.btnQuery.Text = "Query"; + this.btnQuery.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.btnQuery.UseVisualStyleBackColor = true; + this.btnQuery.Click += new System.EventHandler(this.btnQuery_Click); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.ForeColor = System.Drawing.Color.LimeGreen; + this.label8.Location = new System.Drawing.Point(7, 44); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(91, 13); + this.label8.TabIndex = 0; + this.label8.Text = "Ausführungszeit: -"; + // + // tabOutput + // + this.tabOutput.Controls.Add(this.tabTextdarstellung); + this.tabOutput.Controls.Add(this.tabDataGridView); + this.tabOutput.Location = new System.Drawing.Point(13, 161); + this.tabOutput.Name = "tabOutput"; + this.tabOutput.SelectedIndex = 0; + this.tabOutput.Size = new System.Drawing.Size(578, 290); + this.tabOutput.TabIndex = 2; + // + // tabTextdarstellung + // + this.tabTextdarstellung.Controls.Add(this.txtOutput); + this.tabTextdarstellung.Location = new System.Drawing.Point(4, 22); + this.tabTextdarstellung.Name = "tabTextdarstellung"; + this.tabTextdarstellung.Padding = new System.Windows.Forms.Padding(3); + this.tabTextdarstellung.Size = new System.Drawing.Size(570, 264); + this.tabTextdarstellung.TabIndex = 0; + this.tabTextdarstellung.Text = "Textdarstellung"; + this.tabTextdarstellung.UseVisualStyleBackColor = true; + // + // txtOutput + // + this.txtOutput.Dock = System.Windows.Forms.DockStyle.Fill; + this.txtOutput.Location = new System.Drawing.Point(3, 3); + this.txtOutput.Multiline = true; + this.txtOutput.Name = "txtOutput"; + this.txtOutput.Size = new System.Drawing.Size(564, 258); + this.txtOutput.TabIndex = 0; + // + // tabDataGridView + // + this.tabDataGridView.Controls.Add(this.dataGridOutput); + this.tabDataGridView.Location = new System.Drawing.Point(4, 22); + this.tabDataGridView.Name = "tabDataGridView"; + this.tabDataGridView.Padding = new System.Windows.Forms.Padding(3); + this.tabDataGridView.Size = new System.Drawing.Size(570, 264); + this.tabDataGridView.TabIndex = 1; + this.tabDataGridView.Text = "DataGridView"; + this.tabDataGridView.UseVisualStyleBackColor = true; + // + // dataGridOutput + // + this.dataGridOutput.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridOutput.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridOutput.Location = new System.Drawing.Point(3, 3); + this.dataGridOutput.Name = "dataGridOutput"; + this.dataGridOutput.Size = new System.Drawing.Size(564, 258); + this.dataGridOutput.TabIndex = 0; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Text = "Form1"; + this.BackColor = System.Drawing.Color.White; + this.ClientSize = new System.Drawing.Size(601, 463); + this.Controls.Add(this.tabOutput); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Name = "Form1"; + this.Text = "SQL-Tool"; + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.tabOutput.ResumeLayout(false); + this.tabTextdarstellung.ResumeLayout(false); + this.tabTextdarstellung.PerformLayout(); + this.tabDataGridView.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridOutput)).EndInit(); + this.ResumeLayout(false); + } #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox txtPassword; + private System.Windows.Forms.TextBox txtUser; + private System.Windows.Forms.TextBox txtDatabase; + private System.Windows.Forms.TextBox txtServer; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.TextBox txtQuery; + private System.Windows.Forms.Button btnQuery; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TabControl tabOutput; + private System.Windows.Forms.TabPage tabTextdarstellung; + private System.Windows.Forms.TabPage tabDataGridView; + private System.Windows.Forms.TextBox txtOutput; + private System.Windows.Forms.DataGridView dataGridOutput; } } diff --git a/SQL-Tool/Form1.cs b/SQL-Tool/Form1.cs index f17dd3e..3b8d82f 100644 --- a/SQL-Tool/Form1.cs +++ b/SQL-Tool/Form1.cs @@ -2,19 +2,72 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; +using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using MySql.Data.MySqlClient; namespace SQL_Tool { public partial class Form1 : Form { + private DataTable _dt = new DataTable(); + private DatabaseWrapper _dbWrapper = null; + public Form1() { InitializeComponent(); } + + private void btnSave_Click(object sender, EventArgs e) + { + if (Uri.CheckHostName(txtServer.Text) == UriHostNameType.Unknown) + { + MessageBox.Show("Server not valid!"); + return; + } + try + { + _dbWrapper = new MySqlWrapper(txtServer.Text, txtDatabase.Text, txtUser.Text, txtPassword.Text); + } + catch (Exception) + { + MessageBox.Show("Failed to open connection!"); + return; + } + + } + + private void btnQuery_Click(object sender, EventArgs e) + { + + if (_dbWrapper == null || _dbWrapper.State != ConnectionState.Open) + { + MessageBox.Show("Please provide some connection details :-)"); + return; + } + try + { + _dt = _dbWrapper.ExecuteQuery(txtQuery.Text); + txtOutput.Text = _dbWrapper.DataTableToString(_dt); + dataGridOutput.DataSource = _dt; + label8.Text = $"Ausführungszeit: {_dbWrapper.GetExecutionTime()} ms"; + } + catch (DatabaseWrapperInvalidQueryException ex) + { + txtOutput.Text = "Exception!\r\nMessage:\r\n" + ex.Message; + } + } + + private void txtQuery_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == Convert.ToChar(Keys.Enter)) + { + this.btnQuery_Click(sender, e); + } + } } } diff --git a/SQL-Tool/Form1.resx b/SQL-Tool/Form1.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/SQL-Tool/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/SQL-Tool/MySql.Data.dll b/SQL-Tool/MySql.Data.dll new file mode 100644 index 0000000..678ade8 Binary files /dev/null and b/SQL-Tool/MySql.Data.dll differ diff --git a/SQL-Tool/MySqlWrapper.cs b/SQL-Tool/MySqlWrapper.cs new file mode 100644 index 0000000..a7cbb16 --- /dev/null +++ b/SQL-Tool/MySqlWrapper.cs @@ -0,0 +1,80 @@ +using System.Data; +using System.Diagnostics; +using MySql.Data.MySqlClient; + +namespace SQL_Tool +{ + class MySqlWrapper : DatabaseWrapper + { + private MySqlConnection _dbcon = null; + private long _execTime; + + public override ConnectionState State => _dbcon.State; + + public MySqlWrapper(string connectionString) + { + _dbcon = new MySqlConnection(connectionString); + } + + public MySqlWrapper(string host, string database, string username, string password) + { + MySqlConnectionStringBuilder csb = new MySqlConnectionStringBuilder + { + Server = host, + Database = database, + UserID = username, + Password = password + }; + _dbcon = new MySqlConnection(csb.ToString()); + _dbcon.Open(); + System.Console.WriteLine("MySQL version : {0}", _dbcon.ServerVersion); + } + + ~MySqlWrapper() + { + if( _dbcon != null && _dbcon.State == ConnectionState.Open) + { + _dbcon.Close(); + } + } + + public override int ExecuteCommand(string sqlStatement) + { + Stopwatch sw = new Stopwatch(); + sw.Start(); + MySqlCommand cmd = new MySqlCommand(sqlStatement, _dbcon); + var rv = cmd.ExecuteNonQuery(); + sw.Stop(); + _execTime = sw.ElapsedMilliseconds; + return rv; + } + + public override DataTable ExecuteQuery(string sqlStatement, DataTable dt = null) + { + if (dt == null) + { + dt = new DataTable(); + } + Stopwatch sw = new Stopwatch(); + sw.Start(); + try + { + MySqlDataAdapter da = new MySqlDataAdapter(sqlStatement, _dbcon); + da.Fill(dt); + } + catch (MySqlException ex) + { + throw new DatabaseWrapperInvalidQueryException(ex.Message); + } + sw.Stop(); + _execTime = sw.ElapsedMilliseconds; + return dt; + } + + public override long GetExecutionTime() + { + return _execTime; + } + + } +} diff --git a/SQL-Tool/Properties/Resources.Designer.cs b/SQL-Tool/Properties/Resources.Designer.cs index b31aa7a..8d49d47 100644 --- a/SQL-Tool/Properties/Resources.Designer.cs +++ b/SQL-Tool/Properties/Resources.Designer.cs @@ -1,71 +1,93 @@ //------------------------------------------------------------------------------ // -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion: 4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn -// der Code neu generiert wird. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ -namespace SQL_Tool.Properties -{ - - +namespace SQL_Tool.Properties { + using System; + + /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder-Klasse - // über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der Option /str erneut aus, oder erstellen Sie Ihr VS-Projekt neu. + // This class was auto-generated by the StronglyTypedResourceBuilder + // 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", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - + internal class Resources { + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { + internal Resources() { } - + /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SQL_Tool.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } - + /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenlookups, die diese stark typisierte Ressourcenklasse verwenden. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { + internal static global::System.Globalization.CultureInfo Culture { + get { return resourceCulture; } - set - { + set { resourceCulture = value; } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrow_right { + get { + object obj = ResourceManager.GetObject("arrow-right", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap page_zoom { + get { + object obj = ResourceManager.GetObject("page-zoom", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap server_database { + get { + object obj = ResourceManager.GetObject("server-database", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/SQL-Tool/Properties/Resources.resx b/SQL-Tool/Properties/Resources.resx index af7dbeb..a9d36d3 100644 --- a/SQL-Tool/Properties/Resources.resx +++ b/SQL-Tool/Properties/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + @@ -109,9 +112,19 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\arrow-right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\page-zoom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\server-database.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/SQL-Tool/Resources/arrow-right.png b/SQL-Tool/Resources/arrow-right.png new file mode 100644 index 0000000..83870ee Binary files /dev/null and b/SQL-Tool/Resources/arrow-right.png differ diff --git a/SQL-Tool/Resources/page-zoom.png b/SQL-Tool/Resources/page-zoom.png new file mode 100644 index 0000000..78bb7a6 Binary files /dev/null and b/SQL-Tool/Resources/page-zoom.png differ diff --git a/SQL-Tool/Resources/server-database.png b/SQL-Tool/Resources/server-database.png new file mode 100644 index 0000000..de59704 Binary files /dev/null and b/SQL-Tool/Resources/server-database.png differ diff --git a/SQL-Tool/SQL-Tool.csproj b/SQL-Tool/SQL-Tool.csproj index 53eaf77..9462a69 100644 --- a/SQL-Tool/SQL-Tool.csproj +++ b/SQL-Tool/SQL-Tool.csproj @@ -33,6 +33,9 @@ 4 + + .\MySql.Data.dll + @@ -46,14 +49,19 @@ + Form Form1.cs + + + Form1.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -62,6 +70,7 @@ True Resources.resx + True SettingsSingleFileGenerator @@ -76,6 +85,15 @@ + + + + + + + + +