diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/Commands/EditConnectionsFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/Commands/EditConnectionsFormCommand.cs
new file mode 100644
index 0000000..c79e403
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/Commands/EditConnectionsFormCommand.cs
@@ -0,0 +1,30 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager.Commands
+{
+ /// <summary>The edit connections form command.</summary>
+ public class EditConnectionsFormCommand : CommandBase
+ {
+ /// <summary>Initializes a new instance of the <see cref="EditConnectionsFormCommand"/> class.</summary>
+ public EditConnectionsFormCommand()
+ : base("&Edit Connection Strings")
+ {
+ SmallImage = ImageResource.database_edit;
+ }
+
+ /// <summary>Execute the command.</summary>
+ public override void Execute()
+ {
+ DbConnectionsForm frm = Services.Resolve<DbConnectionsForm>();
+ frm.ShowDialog(HostWindow.Instance);
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.cs
new file mode 100644
index 0000000..b860634
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.cs
@@ -0,0 +1,346 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Data.Common;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+ /// <summary>The connection string builder form.</summary>
+ public partial class ConnectionStringBuilderForm : Form
+ {
+ /// <summary>The _host window.</summary>
+ private readonly IHostWindow _hostWindow;
+
+ /// <summary>The _services.</summary>
+ private readonly IApplicationServices _services;
+
+ /// <summary>Gets or sets ConnectionDefinition.</summary>
+ public DbConnectionDefinition ConnectionDefinition { get; set; }
+
+ /// <summary>The default provider name.</summary>
+ public const string DefaultProviderName = "System.Data.SqlClient";
+
+ /// <summary>The _initialised.</summary>
+ private bool _initialised;
+
+ /// <summary>The _loaded.</summary>
+ private bool _loaded;
+
+ /// <summary>The _init provider.</summary>
+ private string _initProvider;
+
+ /// <summary>The _provider name.</summary>
+ private string _providerName = DefaultProviderName;
+
+ /// <summary>The _conn str.</summary>
+ private string _connStr;
+
+ /// <summary>The _conn str bldr.</summary>
+ private DbConnectionStringBuilder _connStrBldr;
+
+ /// <summary>The _dirty.</summary>
+ private bool _dirty;
+
+ /// <summary>Gets or sets ConnectionName.</summary>
+ public string ConnectionName
+ {
+ get { return txtConnectionName.Text; }
+ set { txtConnectionName.Text = value; }
+ }
+
+ /// <summary>Gets or sets Comments.</summary>
+ public string Comments
+ {
+ get { return txtComments.Text; }
+ set { txtComments.Text = value; }
+ }
+
+ /// <summary>Gets or sets ProviderName.</summary>
+ public string ProviderName
+ {
+ get { return _providerName; }
+ set
+ {
+ _providerName = value;
+ cboProvider.SelectedItem = _providerName;
+ }
+ }
+
+ /// <summary>
+ /// The supplied connection string - or if during an edit - the new one.
+ /// </summary>
+ public string ConnectionString
+ {
+ get
+ {
+ if (_connStrBldr != null)
+ {
+ return _connStrBldr.ConnectionString;
+ }
+
+ return _connStr;
+ }
+
+ set
+ {
+ _connStr = value; // store
+ if (_connStrBldr == null)
+ {
+ BindNewConnectionStringBuilder();
+ }
+ }
+ }
+
+ /// <summary>Gets DbConnectionStringBuilderInstance.</summary>
+ public DbConnectionStringBuilder DbConnectionStringBuilderInstance
+ {
+ get { return _connStrBldr; }
+ }
+
+
+ /// <summary>Initializes a new instance of the <see cref="ConnectionStringBuilderForm"/> class.</summary>
+ /// <param name="hostWindow">The host window.</param>
+ /// <param name="services">The services.</param>
+ public ConnectionStringBuilderForm(IHostWindow hostWindow, IApplicationServices services)
+ {
+ InitializeComponent();
+ _hostWindow = hostWindow;
+ _services = services;
+ Icon = ImageResource.database_edit_icon;
+ }
+
+ /// <summary>Initializes a new instance of the <see cref="ConnectionStringBuilderForm"/> class.</summary>
+ /// <param name="hostWindow">The host window.</param>
+ /// <param name="definition">The definition.</param>
+ /// <param name="services">The services.</param>
+ public ConnectionStringBuilderForm(IHostWindow hostWindow, DbConnectionDefinition definition, IApplicationServices services)
+ : this(hostWindow, services)
+ {
+ ConnectionDefinition = definition;
+ ConnectionName = ConnectionDefinition.Name;
+ Comments = ConnectionDefinition.Comment;
+ _initProvider = ConnectionDefinition.ProviderName;
+ _connStr = ConnectionDefinition.ConnectionString;
+ }
+
+ /// <summary>The connection string builder form_ load.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void ConnectionStringBuilderForm_Load(object sender, EventArgs e)
+ {
+ cboProvider.DataSource = Utility.GetSqlProviderNames();
+ _initialised = true;
+ }
+
+ /// <summary>The connection string builder form_ shown.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void ConnectionStringBuilderForm_Shown(object sender, EventArgs e)
+ {
+ if (_initProvider == null)
+ {
+ ProviderName = DefaultProviderName;
+ }
+ else
+ {
+ ProviderName = _initProvider;
+ }
+
+ _loaded = true;
+ }
+
+ /// <summary>The connection string builder form_ form closing.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void ConnectionStringBuilderForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (_dirty)
+ {
+ DialogResult saveFile = _hostWindow.DisplayMessageBox(
+ this,
+ Resources.The_connection_details_have_changed__do_you_want_to_save, Resources.Save_Changes,
+ MessageBoxButtons.YesNoCancel,
+ MessageBoxIcon.Question,
+ MessageBoxDefaultButton.Button1,
+ 0,
+ null,
+ null);
+
+ switch (saveFile)
+ {
+ case DialogResult.Yes:
+ WriteValuesBack();
+ break;
+ case DialogResult.Cancel:
+ e.Cancel = true;
+ break;
+ }
+ }
+ }
+
+
+ /// <summary>The tool strip button ok_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonOk_Click(object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.OK;
+ WriteValuesBack();
+ Close();
+ }
+
+ /// <summary>The tool strip button cancel_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonCancel_Click(object sender, EventArgs e)
+ {
+ // todo - is dirty?
+ DialogResult = DialogResult.Cancel;
+ Close();
+ }
+
+ /// <summary>The write values back.</summary>
+ protected void WriteValuesBack()
+ {
+ if (ConnectionDefinition == null)
+ {
+ ConnectionDefinition = new DbConnectionDefinition();
+ }
+
+ ConnectionDefinition.Name = ConnectionName;
+ ConnectionDefinition.ProviderName = ProviderName;
+ ConnectionDefinition.ConnectionString = ConnectionString;
+ ConnectionDefinition.Comment = Comments;
+ _dirty = false;
+ }
+
+
+ /// <summary>The bind new connection string builder.</summary>
+ private void BindNewConnectionStringBuilder()
+ {
+ if (!_initialised)
+ {
+ return;
+ }
+
+ bool getBuilderFailed = false;
+ try
+ {
+ _connStrBldr = DbProviderFactories.GetFactory(ProviderName).CreateConnectionStringBuilder();
+ if (_connStrBldr == null)
+ {
+ getBuilderFailed = true;
+ }
+ }
+ catch
+ {
+ getBuilderFailed = true;
+ }
+
+ if (getBuilderFailed)
+ {
+ _connStrBldr = new GenericConnectionStringBuilder();
+ }
+
+ try
+ {
+ _connStrBldr.ConnectionString = _connStr;
+ }
+ catch (ArgumentException argExp)
+ {
+ // consume error but notify
+ MessageBox.Show(Resources.BindNewConnectionStringBuilder_Could_not_populate_with_current_connection_string___ + argExp.Message);
+ }
+
+ propertyGridDbConnection.SelectedObject = _connStrBldr;
+ }
+
+ /// <summary>The cbo provider_ selected index changed.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void cboProvider_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (!_initialised)
+ {
+ return;
+ }
+
+ SetDirty();
+ if (cboProvider.SelectedItem != null)
+ {
+ ProviderName = cboProvider.SelectedItem.ToString();
+ BindNewConnectionStringBuilder();
+ }
+ }
+
+ /// <summary>The items text changed.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void ItemsTextChanged(object sender, EventArgs e)
+ {
+ SetDirty();
+ }
+
+ /// <summary>The property grid db connection_ property value changed.</summary>
+ /// <param name="s">The s.</param>
+ /// <param name="e">The e.</param>
+ private void propertyGridDbConnection_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
+ {
+ SetDirty();
+ }
+
+ /// <summary>The set dirty.</summary>
+ private void SetDirty()
+ {
+ if (!_loaded)
+ {
+ return;
+ }
+
+ if (!_dirty)
+ {
+ _dirty = true;
+ Text += "*";
+ }
+ }
+
+ /// <summary>The tool strip button test_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonTest_Click(object sender, EventArgs e)
+ {
+ // do a standalone raw connection test
+ Exception exp = QueryRunner.TestDbConnection(ProviderName, ConnectionString);
+ if (exp == null)
+ {
+ string msg = string.Format(Resources.Connected_to_0_successfully, ConnectionName);
+ _hostWindow.DisplaySimpleMessageBox(this, msg, Resources.Connection_Successful);
+ }
+ else
+ {
+ string msg = string.Format(Resources.Failed_connecting_to_0_1_2, ConnectionName, Environment.NewLine, exp.Message);
+ _hostWindow.DisplaySimpleMessageBox(this, msg, Resources.Connection_Failed);
+ }
+ }
+
+#if DEBUG
+
+ /// <summary>The to string.</summary>
+ /// <returns>The to string.</returns>
+ public override string ToString()
+ {
+ return string.Format("[ConnectionStringBuilderForm => Name: {0}; Provider: {1}; ConnectionString: {2}]", ConnectionName, ProviderName,
+ ConnectionString);
+ }
+
+#endif
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.Designer.cs
new file mode 100644
index 0000000..36e0d03
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.Designer.cs
@@ -0,0 +1,224 @@
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+ partial class ConnectionStringBuilderForm
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConnectionStringBuilderForm));
+ this.cboProvider = new System.Windows.Forms.ComboBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.propertyGridDbConnection = new System.Windows.Forms.PropertyGrid();
+ this.label2 = new System.Windows.Forms.Label();
+ this.txtConnectionName = new System.Windows.Forms.TextBox();
+ this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.toolStripButtonOk = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButtonCancel = new System.Windows.Forms.ToolStripButton();
+ this.txtComments = new System.Windows.Forms.TextBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripButtonTest = new System.Windows.Forms.ToolStripButton();
+ this.groupBox1.SuspendLayout();
+ this.toolStrip1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // cboProvider
+ //
+ this.cboProvider.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.cboProvider.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.cboProvider.FormattingEnabled = true;
+ this.cboProvider.Location = new System.Drawing.Point(120, 94);
+ this.cboProvider.Name = "cboProvider";
+ this.cboProvider.Size = new System.Drawing.Size(295, 21);
+ this.cboProvider.TabIndex = 5;
+ this.cboProvider.SelectedIndexChanged += new System.EventHandler(this.cboProvider_SelectedIndexChanged);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 97);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(46, 13);
+ this.label1.TabIndex = 4;
+ this.label1.Text = "Provider";
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.propertyGridDbConnection);
+ this.groupBox1.Location = new System.Drawing.Point(12, 121);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(403, 288);
+ this.groupBox1.TabIndex = 10;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Connection Settings";
+ //
+ // propertyGridDbConnection
+ //
+ this.propertyGridDbConnection.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.propertyGridDbConnection.Location = new System.Drawing.Point(3, 16);
+ this.propertyGridDbConnection.Name = "propertyGridDbConnection";
+ this.propertyGridDbConnection.Size = new System.Drawing.Size(397, 269);
+ this.propertyGridDbConnection.TabIndex = 0;
+ this.propertyGridDbConnection.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.propertyGridDbConnection_PropertyValueChanged);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(12, 15);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(35, 13);
+ this.label2.TabIndex = 0;
+ this.label2.Text = "Name";
+ //
+ // txtConnectionName
+ //
+ this.txtConnectionName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtConnectionName.Location = new System.Drawing.Point(120, 12);
+ this.txtConnectionName.Name = "txtConnectionName";
+ this.txtConnectionName.Size = new System.Drawing.Size(295, 20);
+ this.txtConnectionName.TabIndex = 1;
+ this.txtConnectionName.TextChanged += new System.EventHandler(this.ItemsTextChanged);
+ //
+ // toolStrip1
+ //
+ this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripButtonOk,
+ this.toolStripButtonCancel,
+ this.toolStripSeparator1,
+ this.toolStripButtonTest});
+ this.toolStrip1.Location = new System.Drawing.Point(0, 412);
+ this.toolStrip1.Name = "toolStrip1";
+ this.toolStrip1.Size = new System.Drawing.Size(427, 25);
+ this.toolStrip1.TabIndex = 15;
+ this.toolStrip1.Text = "toolStrip1";
+ //
+ // toolStripButtonOk
+ //
+ this.toolStripButtonOk.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripButtonOk.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonOk.Image")));
+ this.toolStripButtonOk.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonOk.Name = "toolStripButtonOk";
+ this.toolStripButtonOk.Size = new System.Drawing.Size(27, 22);
+ this.toolStripButtonOk.Text = "&OK";
+ this.toolStripButtonOk.Click += new System.EventHandler(this.toolStripButtonOk_Click);
+ //
+ // toolStripButtonCancel
+ //
+ this.toolStripButtonCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripButtonCancel.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonCancel.Image")));
+ this.toolStripButtonCancel.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonCancel.Name = "toolStripButtonCancel";
+ this.toolStripButtonCancel.Size = new System.Drawing.Size(47, 22);
+ this.toolStripButtonCancel.Text = "&Cancel";
+ this.toolStripButtonCancel.Click += new System.EventHandler(this.toolStripButtonCancel_Click);
+ //
+ // txtComments
+ //
+ this.txtComments.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtComments.Location = new System.Drawing.Point(120, 38);
+ this.txtComments.Multiline = true;
+ this.txtComments.Name = "txtComments";
+ this.txtComments.Size = new System.Drawing.Size(295, 50);
+ this.txtComments.TabIndex = 3;
+ this.txtComments.TextChanged += new System.EventHandler(this.ItemsTextChanged);
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(12, 41);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(56, 13);
+ this.label3.TabIndex = 2;
+ this.label3.Text = "Comments";
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripButtonTest
+ //
+ this.toolStripButtonTest.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripButtonTest.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonTest.Image")));
+ this.toolStripButtonTest.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonTest.Name = "toolStripButtonTest";
+ this.toolStripButtonTest.Size = new System.Drawing.Size(42, 22);
+ this.toolStripButtonTest.Text = "Test...";
+ this.toolStripButtonTest.Click += new System.EventHandler(this.toolStripButtonTest_Click);
+ //
+ // ConnectionStringBuilderForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(427, 437);
+ this.Controls.Add(this.txtComments);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.toolStrip1);
+ this.Controls.Add(this.txtConnectionName);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.groupBox1);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.cboProvider);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "ConnectionStringBuilderForm";
+ this.Text = "Connection String Builder";
+ this.Load += new System.EventHandler(this.ConnectionStringBuilderForm_Load);
+ this.Shown += new System.EventHandler(this.ConnectionStringBuilderForm_Shown);
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ConnectionStringBuilderForm_FormClosing);
+ this.groupBox1.ResumeLayout(false);
+ this.toolStrip1.ResumeLayout(false);
+ this.toolStrip1.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ComboBox cboProvider;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox txtConnectionName;
+ private System.Windows.Forms.ToolStrip toolStrip1;
+ private System.Windows.Forms.ToolStripButton toolStripButtonCancel;
+ private System.Windows.Forms.ToolStripButton toolStripButtonOk;
+ private System.Windows.Forms.PropertyGrid propertyGridDbConnection;
+ private System.Windows.Forms.TextBox txtComments;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripButton toolStripButtonTest;
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.resx
new file mode 100644
index 0000000..bfb5614
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringBuilderForm.resx
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="toolStripButtonOk.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+ U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+ VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+ QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+ /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+ cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+ 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+ NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="toolStripButtonCancel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+ U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+ VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+ QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+ /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+ cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+ 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+ NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+ </data>
+ <data name="toolStripButtonTest.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
+ U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
+ VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
+ QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
+ /g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
+ cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
+ 3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
+ dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
+ NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
+ s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
+</value>
+ </data>
+</root>
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringsManagerLoader.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringsManagerLoader.cs
new file mode 100644
index 0000000..5f8965c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/ConnectionStringsManagerLoader.cs
@@ -0,0 +1,34 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.PlugIns.ConnectionStringsManager.Commands;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+ /// <summary>The connection strings manager loader.</summary>
+ public class ConnectionStringsManagerLoader : PluginLoaderBase
+ {
+ /// <summary>Initializes a new instance of the <see cref="ConnectionStringsManagerLoader"/> class.</summary>
+ public ConnectionStringsManagerLoader() : base(
+ "Connection String Manager",
+ "A Mini SQL Query Plugin for managing the list of connection strings.",
+ 10)
+ {
+ }
+
+ /// <summary>Iinitialize the plug in.</summary>
+ public override void InitializePlugIn()
+ {
+ Services.RegisterComponent<DbConnectionsForm>("DbConnectionsForm");
+ ToolStripMenuItem editMenu = Services.HostWindow.GetMenuItem("edit");
+ editMenu.DropDownItems.Add(CommandControlBuilder.CreateToolStripMenuItem<EditConnectionsFormCommand>());
+ Services.HostWindow.AddToolStripCommand<EditConnectionsFormCommand>(null);
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.cs
new file mode 100644
index 0000000..b3fdbbc
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.cs
@@ -0,0 +1,345 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Properties;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+ /// <summary>The db connections form.</summary>
+ public partial class DbConnectionsForm : Form
+ {
+ /// <summary>The _host window.</summary>
+ private readonly IHostWindow _hostWindow;
+
+ /// <summary>The _services.</summary>
+ private readonly IApplicationServices _services;
+
+ /// <summary>The _settings.</summary>
+ private readonly IApplicationSettings _settings;
+
+ /// <summary>The _definition list.</summary>
+ private DbConnectionDefinitionList _definitionList;
+
+ private bool _loaded;
+
+ private bool _dirty;
+
+ /// <summary>Initializes a new instance of the <see cref="DbConnectionsForm"/> class.</summary>
+ public DbConnectionsForm()
+ {
+ InitializeComponent();
+ toolStripButtonAdd.Image = ImageResource.database_add;
+ toolStripButtonCopyAsNew.Image = ImageResource.database_add;
+ toolStripButtonEditConnStr.Image = ImageResource.database_edit;
+ toolStripButtonDelete.Image = ImageResource.database_delete;
+ Icon = ImageResource.disconnect_icon;
+ }
+
+ /// <summary>Initializes a new instance of the <see cref="DbConnectionsForm"/> class.</summary>
+ /// <param name="services">The services.</param>
+ /// <param name="hostWindow">The host window.</param>
+ /// <param name="settings">The settings.</param>
+ public DbConnectionsForm(IApplicationServices services, IHostWindow hostWindow, IApplicationSettings settings)
+ : this()
+ {
+ _services = services;
+ _hostWindow = hostWindow;
+ _settings = settings;
+ }
+
+ /// <summary>The load connection definitions.</summary>
+ /// <returns></returns>
+ private static DbConnectionDefinitionList LoadConnectionDefinitions()
+ {
+ return DbConnectionDefinitionList.FromXml(Utility.LoadConnections());
+ }
+
+
+ /// <summary>The add to list.</summary>
+ /// <param name="definition">The definition.</param>
+ private void AddToList(DbConnectionDefinition definition)
+ {
+ if (!lstConnections.Items.Contains(definition))
+ {
+ lstConnections.Items.Add(definition);
+ SetDirty();
+ }
+ }
+
+ /// <summary>The db connections form_ form closing.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void DbConnectionsForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (_dirty)
+ {
+ DialogResult saveFile = _hostWindow.DisplayMessageBox(
+ this,
+ Resources.The_connection_details_have_changed__do_you_want_to_save,
+ Resources.Save_Changes,
+ MessageBoxButtons.YesNoCancel,
+ MessageBoxIcon.Question,
+ MessageBoxDefaultButton.Button1,
+ 0,
+ null,
+ null);
+
+ switch (saveFile)
+ {
+ case DialogResult.Yes:
+ SaveConnectionDefinitions(_definitionList);
+ break;
+ case DialogResult.Cancel:
+ e.Cancel = true;
+ break;
+ }
+ }
+ }
+
+ /// <summary>The db connections form_ shown.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void DbConnectionsForm_Shown(object sender, EventArgs e)
+ {
+ _definitionList = LoadConnectionDefinitions();
+ UpdateListView();
+ _loaded = true;
+ }
+
+ /// <summary>The manage definition.</summary>
+ /// <param name="definition">The definition.</param>
+ private void ManageDefinition(DbConnectionDefinition definition)
+ {
+ ConnectionStringBuilderForm frm;
+ string oldName = null;
+
+ if (definition == null)
+ {
+ frm = new ConnectionStringBuilderForm(_hostWindow, _services); // new blank form
+ }
+ else
+ {
+ oldName = definition.Name;
+ frm = new ConnectionStringBuilderForm(_hostWindow, definition, _services);
+ }
+
+ frm.ShowDialog(this);
+
+ if (frm.DialogResult == DialogResult.OK)
+ {
+ SetDirty();
+
+ if (lstConnections.Items.Contains(frm.ConnectionDefinition) && definition != null)
+ {
+ if (definition.Name != oldName)
+ {
+ // want the list text to update due to name change
+ UpdateListView();
+ lstConnections.SelectedItem = definition;
+ }
+ else
+ {
+ UpdateDetailsPanel(lstConnections.SelectedItem as DbConnectionDefinition);
+ }
+ }
+ else
+ {
+ _definitionList.AddDefinition(frm.ConnectionDefinition);
+ AddToList(frm.ConnectionDefinition);
+ lstConnections.SelectedItem = frm.ConnectionDefinition;
+ }
+ }
+ }
+
+ /// <summary>The remove from list.</summary>
+ /// <param name="definition">The definition.</param>
+ private void RemoveFromList(DbConnectionDefinition definition)
+ {
+ if (lstConnections.Items.Contains(definition))
+ {
+ lstConnections.Items.Remove(definition);
+ SetDirty();
+ }
+ }
+
+
+ /// <summary>The save connection definitions.</summary>
+ /// <param name="data">The data.</param>
+ private void SaveConnectionDefinitions(DbConnectionDefinitionList data)
+ {
+ _settings.SetConnectionDefinitions(data);
+ Utility.SaveConnections(data);
+ _dirty = false;
+ }
+
+ /// <summary>The update details panel.</summary>
+ /// <param name="definition">The definition.</param>
+ private void UpdateDetailsPanel(DbConnectionDefinition definition)
+ {
+ if (definition != null)
+ {
+ txtName.Text = definition.Name;
+ txtProvider.Text = definition.ProviderName;
+ txtConn.Text = definition.ConnectionString;
+ txtComment.Text = definition.Comment;
+ }
+ else
+ {
+ txtName.Clear();
+ txtProvider.Clear();
+ txtConn.Clear();
+ txtComment.Clear();
+ }
+ }
+
+ /// <summary>The update list view.</summary>
+ private void UpdateListView()
+ {
+ if (_definitionList.Definitions != null && _definitionList.Definitions.Length > 0)
+ {
+ lstConnections.Items.Clear();
+ lstConnections.Items.AddRange(_definitionList.Definitions);
+ lstConnections.SelectedItem = _definitionList.Definitions[0];
+ }
+ }
+
+ /// <summary>The lst connections_ double click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void lstConnections_DoubleClick(object sender, EventArgs e)
+ {
+ DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+ if (definition != null)
+ {
+ ManageDefinition(definition);
+ }
+ }
+
+ /// <summary>The lst connections_ selected value changed.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void lstConnections_SelectedValueChanged(object sender, EventArgs e)
+ {
+ DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+ UpdateDetailsPanel(definition);
+ }
+
+ /// <summary>The tool strip button add_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonAdd_Click(object sender, EventArgs e)
+ {
+ ManageDefinition(null);
+ }
+
+ /// <summary>The tool strip button cancel_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonCancel_Click(object sender, EventArgs e)
+ {
+ Close();
+ }
+
+ /// <summary>The tool strip button copy as new_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonCopyAsNew_Click(object sender, EventArgs e)
+ {
+ DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+ if (definition != null)
+ {
+ DbConnectionDefinition newDefinition = DbConnectionDefinition.FromXml(definition.ToXml());
+ newDefinition.Name = "Copy of " + newDefinition.Name;
+ ManageDefinition(newDefinition);
+ }
+ }
+
+ /// <summary>The tool strip button delete_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonDelete_Click(object sender, EventArgs e)
+ {
+ DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+ if (definition != null)
+ {
+ int newIndex = Math.Max(lstConnections.SelectedIndex - 1, 0);
+ _definitionList.RemoveDefinition(definition);
+ RemoveFromList(definition);
+ if (lstConnections.Items.Count > 0)
+ {
+ lstConnections.SelectedIndex = newIndex;
+ }
+ }
+ }
+
+ /// <summary>The tool strip button edit conn str_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonEditConnStr_Click(object sender, EventArgs e)
+ {
+ DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+ if (definition != null)
+ {
+ ManageDefinition(definition);
+ }
+ }
+
+ /// <summary>The tool strip button ok_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonOk_Click(object sender, EventArgs e)
+ {
+ SaveConnectionDefinitions(_definitionList);
+ Close();
+ }
+
+ /// <summary>The tool strip button test_ click.</summary>
+ /// <param name="sender">The sender.</param>
+ /// <param name="e">The e.</param>
+ private void toolStripButtonTest_Click(object sender, EventArgs e)
+ {
+ // do a standalone raw connection test
+ DbConnectionDefinition definition = lstConnections.SelectedItem as DbConnectionDefinition;
+ if (definition != null)
+ {
+ Exception exp = QueryRunner.TestDbConnection(definition.ProviderName, definition.ConnectionString);
+ if (exp == null)
+ {
+ string msg = string.Format("Connected to '{0}' successfully.", definition.Name);
+ _hostWindow.DisplaySimpleMessageBox(this, msg, "Connection Successful");
+ }
+ else
+ {
+ string msg = string.Format("Failed connecting to '{0}'.{1}{2}", definition.Name, Environment.NewLine, exp.Message);
+ _hostWindow.DisplaySimpleMessageBox(this, msg, "Connection Failed");
+ }
+ }
+ }
+
+ private void DbConnectionsForm_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ private void SetDirty()
+ {
+ if (!_loaded)
+ {
+ return;
+ }
+
+ if (!_dirty)
+ {
+ _dirty = true;
+ Text += "*";
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.Designer.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.Designer.cs
new file mode 100644
index 0000000..ea1f002
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.Designer.cs
@@ -0,0 +1,325 @@
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+ partial class DbConnectionsForm
+ {
+ /// <summary>
+ /// Required designer variable.
+ /// </summary>
+ private System.ComponentModel.IContainer components = null;
+
+ /// <summary>
+ /// Clean up any resources being used.
+ /// </summary>
+ /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ /// <summary>
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ /// </summary>
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbConnectionsForm));
+ this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.toolStripButtonOk = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButtonCancel = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripButtonAdd = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButtonCopyAsNew = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButtonEditConnStr = new System.Windows.Forms.ToolStripButton();
+ this.toolStripButtonDelete = new System.Windows.Forms.ToolStripButton();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripButtonTest = new System.Windows.Forms.ToolStripButton();
+ this.lstConnections = new System.Windows.Forms.ListBox();
+ this.grpDetails = new System.Windows.Forms.GroupBox();
+ this.txtComment = new System.Windows.Forms.TextBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.txtConn = new System.Windows.Forms.TextBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.txtProvider = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.txtName = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.toolStrip1.SuspendLayout();
+ this.grpDetails.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // toolStrip1
+ //
+ this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.toolStripButtonOk,
+ this.toolStripButtonCancel,
+ this.toolStripSeparator1,
+ this.toolStripButtonAdd,
+ this.toolStripButtonCopyAsNew,
+ this.toolStripButtonEditConnStr,
+ this.toolStripButtonDelete,
+ this.toolStripSeparator2,
+ this.toolStripButtonTest});
+ this.toolStrip1.Location = new System.Drawing.Point(0, 342);
+ this.toolStrip1.Name = "toolStrip1";
+ this.toolStrip1.Size = new System.Drawing.Size(881, 27);
+ this.toolStrip1.TabIndex = 4;
+ this.toolStrip1.Text = "toolStrip1";
+ //
+ // toolStripButtonOk
+ //
+ this.toolStripButtonOk.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripButtonOk.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonOk.Image")));
+ this.toolStripButtonOk.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonOk.Name = "toolStripButtonOk";
+ this.toolStripButtonOk.Size = new System.Drawing.Size(33, 24);
+ this.toolStripButtonOk.Text = "&OK";
+ this.toolStripButtonOk.Click += new System.EventHandler(this.toolStripButtonOk_Click);
+ //
+ // toolStripButtonCancel
+ //
+ this.toolStripButtonCancel.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripButtonCancel.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonCancel.Image")));
+ this.toolStripButtonCancel.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonCancel.Name = "toolStripButtonCancel";
+ this.toolStripButtonCancel.Size = new System.Drawing.Size(57, 24);
+ this.toolStripButtonCancel.Text = "&Cancel";
+ this.toolStripButtonCancel.Click += new System.EventHandler(this.toolStripButtonCancel_Click);
+ //
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(6, 27);
+ //
+ // toolStripButtonAdd
+ //
+ this.toolStripButtonAdd.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonAdd.Image")));
+ this.toolStripButtonAdd.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonAdd.Name = "toolStripButtonAdd";
+ this.toolStripButtonAdd.Size = new System.Drawing.Size(57, 24);
+ this.toolStripButtonAdd.Text = "Add";
+ this.toolStripButtonAdd.ToolTipText = "Add";
+ this.toolStripButtonAdd.Click += new System.EventHandler(this.toolStripButtonAdd_Click);
+ //
+ // toolStripButtonCopyAsNew
+ //
+ this.toolStripButtonCopyAsNew.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonCopyAsNew.Image")));
+ this.toolStripButtonCopyAsNew.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonCopyAsNew.Name = "toolStripButtonCopyAsNew";
+ this.toolStripButtonCopyAsNew.Size = new System.Drawing.Size(115, 24);
+ this.toolStripButtonCopyAsNew.Text = "Copy as New";
+ this.toolStripButtonCopyAsNew.Click += new System.EventHandler(this.toolStripButtonCopyAsNew_Click);
+ //
+ // toolStripButtonEditConnStr
+ //
+ this.toolStripButtonEditConnStr.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonEditConnStr.Image")));
+ this.toolStripButtonEditConnStr.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonEditConnStr.Name = "toolStripButtonEditConnStr";
+ this.toolStripButtonEditConnStr.Size = new System.Drawing.Size(55, 24);
+ this.toolStripButtonEditConnStr.Text = "Edit";
+ this.toolStripButtonEditConnStr.Click += new System.EventHandler(this.toolStripButtonEditConnStr_Click);
+ //
+ // toolStripButtonDelete
+ //
+ this.toolStripButtonDelete.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonDelete.Image")));
+ this.toolStripButtonDelete.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonDelete.Name = "toolStripButtonDelete";
+ this.toolStripButtonDelete.Size = new System.Drawing.Size(73, 24);
+ this.toolStripButtonDelete.Text = "Delete";
+ this.toolStripButtonDelete.Click += new System.EventHandler(this.toolStripButtonDelete_Click);
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 27);
+ //
+ // toolStripButtonTest
+ //
+ this.toolStripButtonTest.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
+ this.toolStripButtonTest.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonTest.Image")));
+ this.toolStripButtonTest.ImageTransparentColor = System.Drawing.Color.Magenta;
+ this.toolStripButtonTest.Name = "toolStripButtonTest";
+ this.toolStripButtonTest.Size = new System.Drawing.Size(49, 24);
+ this.toolStripButtonTest.Text = "Test...";
+ this.toolStripButtonTest.Click += new System.EventHandler(this.toolStripButtonTest_Click);
+ //
+ // lstConnections
+ //
+ this.lstConnections.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)));
+ this.lstConnections.FormattingEnabled = true;
+ this.lstConnections.ItemHeight = 16;
+ this.lstConnections.Location = new System.Drawing.Point(16, 15);
+ this.lstConnections.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.lstConnections.Name = "lstConnections";
+ this.lstConnections.Size = new System.Drawing.Size(335, 292);
+ this.lstConnections.TabIndex = 5;
+ this.lstConnections.SelectedValueChanged += new System.EventHandler(this.lstConnections_SelectedValueChanged);
+ this.lstConnections.DoubleClick += new System.EventHandler(this.lstConnections_DoubleClick);
+ //
+ // grpDetails
+ //
+ this.grpDetails.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.grpDetails.Controls.Add(this.txtComment);
+ this.grpDetails.Controls.Add(this.label4);
+ this.grpDetails.Controls.Add(this.txtConn);
+ this.grpDetails.Controls.Add(this.label3);
+ this.grpDetails.Controls.Add(this.txtProvider);
+ this.grpDetails.Controls.Add(this.label2);
+ this.grpDetails.Controls.Add(this.txtName);
+ this.grpDetails.Controls.Add(this.label1);
+ this.grpDetails.Location = new System.Drawing.Point(360, 15);
+ this.grpDetails.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.grpDetails.Name = "grpDetails";
+ this.grpDetails.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.grpDetails.Size = new System.Drawing.Size(505, 319);
+ this.grpDetails.TabIndex = 6;
+ this.grpDetails.TabStop = false;
+ this.grpDetails.Text = "Details";
+ //
+ // txtComment
+ //
+ this.txtComment.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtComment.Location = new System.Drawing.Point(133, 206);
+ this.txtComment.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.txtComment.Multiline = true;
+ this.txtComment.Name = "txtComment";
+ this.txtComment.ReadOnly = true;
+ this.txtComment.Size = new System.Drawing.Size(363, 105);
+ this.txtComment.TabIndex = 7;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(8, 209);
+ this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(67, 17);
+ this.label4.TabIndex = 6;
+ this.label4.Text = "Comment";
+ //
+ // txtConn
+ //
+ this.txtConn.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtConn.Location = new System.Drawing.Point(133, 87);
+ this.txtConn.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.txtConn.Multiline = true;
+ this.txtConn.Name = "txtConn";
+ this.txtConn.ReadOnly = true;
+ this.txtConn.Size = new System.Drawing.Size(363, 110);
+ this.txtConn.TabIndex = 5;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(8, 91);
+ this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(79, 17);
+ this.label3.TabIndex = 4;
+ this.label3.Text = "Connection";
+ //
+ // txtProvider
+ //
+ this.txtProvider.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtProvider.Location = new System.Drawing.Point(133, 55);
+ this.txtProvider.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.txtProvider.Name = "txtProvider";
+ this.txtProvider.ReadOnly = true;
+ this.txtProvider.Size = new System.Drawing.Size(363, 22);
+ this.txtProvider.TabIndex = 3;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(8, 59);
+ this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(61, 17);
+ this.label2.TabIndex = 2;
+ this.label2.Text = "Provider";
+ //
+ // txtName
+ //
+ this.txtName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.txtName.Location = new System.Drawing.Point(133, 23);
+ this.txtName.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.txtName.Name = "txtName";
+ this.txtName.ReadOnly = true;
+ this.txtName.Size = new System.Drawing.Size(363, 22);
+ this.txtName.TabIndex = 1;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(8, 27);
+ this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(45, 17);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Name";
+ //
+ // DbConnectionsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(881, 369);
+ this.Controls.Add(this.grpDetails);
+ this.Controls.Add(this.lstConnections);
+ this.Controls.Add(this.toolStrip1);
+ this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "DbConnectionsForm";
+ this.ShowIcon = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Database Connection List Editor";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DbConnectionsForm_FormClosing);
+ this.Load += new System.EventHandler(this.DbConnectionsForm_Load);
+ this.Shown += new System.EventHandler(this.DbConnectionsForm_Shown);
+ this.toolStrip1.ResumeLayout(false);
+ this.toolStrip1.PerformLayout();
+ this.grpDetails.ResumeLayout(false);
+ this.grpDetails.PerformLayout();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.ToolStrip toolStrip1;
+ private System.Windows.Forms.ToolStripButton toolStripButtonOk;
+ private System.Windows.Forms.ToolStripButton toolStripButtonCancel;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+ private System.Windows.Forms.ToolStripButton toolStripButtonEditConnStr;
+ private System.Windows.Forms.ListBox lstConnections;
+ private System.Windows.Forms.GroupBox grpDetails;
+ private System.Windows.Forms.TextBox txtProvider;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox txtName;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox txtComment;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.TextBox txtConn;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.ToolStripButton toolStripButtonAdd;
+ private System.Windows.Forms.ToolStripButton toolStripButtonDelete;
+ private System.Windows.Forms.ToolStripButton toolStripButtonCopyAsNew;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
+ private System.Windows.Forms.ToolStripButton toolStripButtonTest;
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.resx b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.resx
new file mode 100644
index 0000000..3b9a305
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/DbConnectionsForm.resx
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+ <!--
+ Microsoft ResX Schema
+
+ Version 2.0
+
+ The primary goals of this format is to allow a simple XML format
+ that is mostly human readable. The generation and parsing of the
+ various data types are done through the TypeConverter classes
+ associated with the data types.
+
+ Example:
+
+ ... ado.net/XML headers & schema ...
+ <resheader name="resmimetype">text/microsoft-resx</resheader>
+ <resheader name="version">2.0</resheader>
+ <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+ <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+ <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+ <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+ <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+ <value>[base64 mime encoded serialized .NET Framework object]</value>
+ </data>
+ <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+ <comment>This is a comment</comment>
+ </data>
+
+ There are any number of "resheader" rows that contain simple
+ name/value pairs.
+
+ Each data row contains a name, and value. The row also contains a
+ type or mimetype. Type corresponds to a .NET class that support
+ text/value conversion through the TypeConverter architecture.
+ Classes that don't support this are serialized and stored with the
+ mimetype set.
+
+ The mimetype is used for serialized objects, and tells the
+ ResXResourceReader how to depersist the object. This is currently not
+ extensible. For a given mimetype the value must be set accordingly:
+
+ Note - application/x-microsoft.net.object.binary.base64 is the format
+ that the ResXResourceWriter will generate, however the reader can
+ read any of the formats listed below.
+
+ mimetype: application/x-microsoft.net.object.binary.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.soap.base64
+ value : The object must be serialized with
+ : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+ : and then encoded with base64 encoding.
+
+ mimetype: application/x-microsoft.net.object.bytearray.base64
+ value : The object must be serialized into a byte array
+ : using a System.ComponentModel.TypeConverter
+ : and then encoded with base64 encoding.
+ -->
+ <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+ <xsd:element name="root" msdata:IsDataSet="true">
+ <xsd:complexType>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ <xsd:attribute name="name" use="required" type="xsd:string" />
+ <xsd:attribute name="type" type="xsd:string" />
+ <xsd:attribute name="mimetype" type="xsd:string" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="assembly">
+ <xsd:complexType>
+ <xsd:attribute name="alias" type="xsd:string" />
+ <xsd:attribute name="name" type="xsd:string" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="data">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+ <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+ <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+ <xsd:attribute ref="xml:space" />
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="resheader">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+ </xsd:sequence>
+ <xsd:attribute name="name" type="xsd:string" use="required" />
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:schema>
+ <resheader name="resmimetype">
+ <value>text/microsoft-resx</value>
+ </resheader>
+ <resheader name="version">
+ <value>2.0</value>
+ </resheader>
+ <resheader name="reader">
+ <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <resheader name="writer">
+ <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </resheader>
+ <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="toolStripButtonOk.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="toolStripButtonCancel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="toolStripButtonAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="toolStripButtonCopyAsNew.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="toolStripButtonEditConnStr.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="toolStripButtonDelete.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
+ <data name="toolStripButtonTest.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+ <value>
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
+ YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
+ 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
+ bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
+ VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
+ c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
+ Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
+ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
+ TgDQASA1MVpwzwAAAABJRU5ErkJggg==
+</value>
+ </data>
+</root>
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/GenericConnectionStringBuilder.cs b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/GenericConnectionStringBuilder.cs
new file mode 100644
index 0000000..5fa0aca
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/PlugIns/ConnectionStringsManager/GenericConnectionStringBuilder.cs
@@ -0,0 +1,79 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System.Collections;
+using System.ComponentModel;
+using System.Data.Common;
+using System.Reflection;
+
+namespace MiniSqlQuery.PlugIns.ConnectionStringsManager
+{
+ /// <summary>The generic connection string builder.</summary>
+ [DefaultMember("Item"), DefaultProperty("ConnectionString")]
+ public class GenericConnectionStringBuilder : DbConnectionStringBuilder
+ {
+ /// <summary>The _properties.</summary>
+ private Hashtable _properties;
+
+ /// <summary>Initializes a new instance of the <see cref="GenericConnectionStringBuilder"/> class.</summary>
+ public GenericConnectionStringBuilder()
+ {
+ Initialize(null);
+ }
+
+ /// <summary>Initializes a new instance of the <see cref="GenericConnectionStringBuilder"/> class.</summary>
+ /// <param name="connectionString">The connection string.</param>
+ public GenericConnectionStringBuilder(string connectionString)
+ {
+ Initialize(connectionString);
+ }
+
+ /// <summary>The try get value.</summary>
+ /// <param name="keyword">The keyword.</param>
+ /// <param name="value">The value.</param>
+ /// <returns>The try get value.</returns>
+ public override bool TryGetValue(string keyword, out object value)
+ {
+ bool success = base.TryGetValue(keyword, out value);
+ if (_properties.ContainsKey(keyword))
+ {
+ PropertyDescriptor descriptor = _properties[keyword] as PropertyDescriptor;
+ if (descriptor == null)
+ {
+ return success;
+ }
+
+ if (success)
+ {
+ value = TypeDescriptor.GetConverter(descriptor.PropertyType).ConvertFrom(value);
+ return success;
+ }
+
+ DefaultValueAttribute attribute = descriptor.Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
+ if (attribute != null)
+ {
+ value = attribute.Value;
+ success = true;
+ }
+ }
+
+ return success;
+ }
+
+ /// <summary>The initialize.</summary>
+ /// <param name="cnnString">The cnn string.</param>
+ private void Initialize(string cnnString)
+ {
+ _properties = new Hashtable();
+ this.GetProperties(_properties);
+ if (!string.IsNullOrEmpty(cnnString))
+ {
+ ConnectionString = cnnString;
+ }
+ }
+ }
+}
\ No newline at end of file