diff --git a/AdoNetDemo/AdoNetDemo.csproj b/AdoNetDemo/AdoNetDemo.csproj
new file mode 100644
index 0000000..22ce8f8
--- /dev/null
+++ b/AdoNetDemo/AdoNetDemo.csproj
@@ -0,0 +1,79 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {51E46E60-2B3F-4811-A8B5-6A9E2C7C206A}
+ WinExe
+ AdoNetDemo
+ AdoNetDemo
+ v4.6.1
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+
+
+
+
+ Form1.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AdoNetDemo/App.config b/AdoNetDemo/App.config
new file mode 100644
index 0000000..731f6de
--- /dev/null
+++ b/AdoNetDemo/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AdoNetDemo/Form1.Designer.cs b/AdoNetDemo/Form1.Designer.cs
new file mode 100644
index 0000000..bea25e3
--- /dev/null
+++ b/AdoNetDemo/Form1.Designer.cs
@@ -0,0 +1,301 @@
+namespace AdoNetDemo
+{
+ partial class Form1
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.dgvProducts = new System.Windows.Forms.DataGridView();
+ this.label1 = new System.Windows.Forms.Label();
+ this.txtName = new System.Windows.Forms.TextBox();
+ this.txtUnitPrice = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.txtStockAmount = new System.Windows.Forms.TextBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.gbAdd = new System.Windows.Forms.GroupBox();
+ this.btnAdd = new System.Windows.Forms.Button();
+ this.gbUpdate = new System.Windows.Forms.GroupBox();
+ this.txtIdUpdate = new System.Windows.Forms.TextBox();
+ this.label7 = new System.Windows.Forms.Label();
+ this.btnUpdate = new System.Windows.Forms.Button();
+ this.txtNameUpdate = new System.Windows.Forms.TextBox();
+ this.txtStockAmountUpdate = new System.Windows.Forms.TextBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.txtUnitPriceUpdate = new System.Windows.Forms.TextBox();
+ this.gbDelete = new System.Windows.Forms.GroupBox();
+ this.btnRemove = new System.Windows.Forms.Button();
+ ((System.ComponentModel.ISupportInitialize)(this.dgvProducts)).BeginInit();
+ this.gbAdd.SuspendLayout();
+ this.gbUpdate.SuspendLayout();
+ this.gbDelete.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // dgvProducts
+ //
+ this.dgvProducts.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
+ this.dgvProducts.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ this.dgvProducts.Location = new System.Drawing.Point(12, 12);
+ this.dgvProducts.Name = "dgvProducts";
+ this.dgvProducts.Size = new System.Drawing.Size(726, 197);
+ this.dgvProducts.TabIndex = 0;
+ this.dgvProducts.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProducts_CellClick);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(18, 22);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(35, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Name";
+ //
+ // txtName
+ //
+ this.txtName.Location = new System.Drawing.Point(98, 19);
+ this.txtName.Name = "txtName";
+ this.txtName.Size = new System.Drawing.Size(134, 20);
+ this.txtName.TabIndex = 2;
+ //
+ // txtUnitPrice
+ //
+ this.txtUnitPrice.Location = new System.Drawing.Point(98, 45);
+ this.txtUnitPrice.Name = "txtUnitPrice";
+ this.txtUnitPrice.Size = new System.Drawing.Size(134, 20);
+ this.txtUnitPrice.TabIndex = 4;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(18, 48);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(53, 13);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "Unit Price";
+ //
+ // txtStockAmount
+ //
+ this.txtStockAmount.Location = new System.Drawing.Point(98, 71);
+ this.txtStockAmount.Name = "txtStockAmount";
+ this.txtStockAmount.Size = new System.Drawing.Size(134, 20);
+ this.txtStockAmount.TabIndex = 6;
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(18, 74);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(74, 13);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "Stock Amount";
+ //
+ // gbAdd
+ //
+ this.gbAdd.Controls.Add(this.btnAdd);
+ this.gbAdd.Controls.Add(this.txtName);
+ this.gbAdd.Controls.Add(this.txtStockAmount);
+ this.gbAdd.Controls.Add(this.label1);
+ this.gbAdd.Controls.Add(this.label3);
+ this.gbAdd.Controls.Add(this.label2);
+ this.gbAdd.Controls.Add(this.txtUnitPrice);
+ this.gbAdd.Location = new System.Drawing.Point(12, 215);
+ this.gbAdd.Name = "gbAdd";
+ this.gbAdd.Size = new System.Drawing.Size(238, 129);
+ this.gbAdd.TabIndex = 7;
+ this.gbAdd.TabStop = false;
+ this.gbAdd.Text = "Add a product";
+ //
+ // btnAdd
+ //
+ this.btnAdd.Location = new System.Drawing.Point(98, 97);
+ this.btnAdd.Name = "btnAdd";
+ this.btnAdd.Size = new System.Drawing.Size(134, 23);
+ this.btnAdd.TabIndex = 7;
+ this.btnAdd.Text = "Add";
+ this.btnAdd.UseVisualStyleBackColor = true;
+ this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
+ //
+ // gbUpdate
+ //
+ this.gbUpdate.Controls.Add(this.txtIdUpdate);
+ this.gbUpdate.Controls.Add(this.label7);
+ this.gbUpdate.Controls.Add(this.btnUpdate);
+ this.gbUpdate.Controls.Add(this.txtNameUpdate);
+ this.gbUpdate.Controls.Add(this.txtStockAmountUpdate);
+ this.gbUpdate.Controls.Add(this.label4);
+ this.gbUpdate.Controls.Add(this.label5);
+ this.gbUpdate.Controls.Add(this.label6);
+ this.gbUpdate.Controls.Add(this.txtUnitPriceUpdate);
+ this.gbUpdate.Location = new System.Drawing.Point(256, 215);
+ this.gbUpdate.Name = "gbUpdate";
+ this.gbUpdate.Size = new System.Drawing.Size(238, 152);
+ this.gbUpdate.TabIndex = 8;
+ this.gbUpdate.TabStop = false;
+ this.gbUpdate.Text = "Update a product";
+ //
+ // txtIdUpdate
+ //
+ this.txtIdUpdate.Location = new System.Drawing.Point(98, 19);
+ this.txtIdUpdate.Name = "txtIdUpdate";
+ this.txtIdUpdate.Size = new System.Drawing.Size(134, 20);
+ this.txtIdUpdate.TabIndex = 9;
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(18, 22);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(16, 13);
+ this.label7.TabIndex = 8;
+ this.label7.Text = "Id";
+ //
+ // btnUpdate
+ //
+ this.btnUpdate.Location = new System.Drawing.Point(98, 123);
+ this.btnUpdate.Name = "btnUpdate";
+ this.btnUpdate.Size = new System.Drawing.Size(134, 23);
+ this.btnUpdate.TabIndex = 7;
+ this.btnUpdate.Text = "Update";
+ this.btnUpdate.UseVisualStyleBackColor = true;
+ this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click);
+ //
+ // txtNameUpdate
+ //
+ this.txtNameUpdate.Location = new System.Drawing.Point(98, 45);
+ this.txtNameUpdate.Name = "txtNameUpdate";
+ this.txtNameUpdate.Size = new System.Drawing.Size(134, 20);
+ this.txtNameUpdate.TabIndex = 2;
+ //
+ // txtStockAmountUpdate
+ //
+ this.txtStockAmountUpdate.Location = new System.Drawing.Point(98, 97);
+ this.txtStockAmountUpdate.Name = "txtStockAmountUpdate";
+ this.txtStockAmountUpdate.Size = new System.Drawing.Size(134, 20);
+ this.txtStockAmountUpdate.TabIndex = 6;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(18, 48);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(35, 13);
+ this.label4.TabIndex = 1;
+ this.label4.Text = "Name";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(18, 100);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(74, 13);
+ this.label5.TabIndex = 5;
+ this.label5.Text = "Stock Amount";
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(18, 74);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(53, 13);
+ this.label6.TabIndex = 3;
+ this.label6.Text = "Unit Price";
+ //
+ // txtUnitPriceUpdate
+ //
+ this.txtUnitPriceUpdate.Location = new System.Drawing.Point(98, 71);
+ this.txtUnitPriceUpdate.Name = "txtUnitPriceUpdate";
+ this.txtUnitPriceUpdate.Size = new System.Drawing.Size(134, 20);
+ this.txtUnitPriceUpdate.TabIndex = 4;
+ //
+ // gbDelete
+ //
+ this.gbDelete.Controls.Add(this.btnRemove);
+ this.gbDelete.Location = new System.Drawing.Point(500, 215);
+ this.gbDelete.Name = "gbDelete";
+ this.gbDelete.Size = new System.Drawing.Size(238, 49);
+ this.gbDelete.TabIndex = 9;
+ this.gbDelete.TabStop = false;
+ this.gbDelete.Text = "Delete a product";
+ //
+ // btnRemove
+ //
+ this.btnRemove.Location = new System.Drawing.Point(98, 17);
+ this.btnRemove.Name = "btnRemove";
+ this.btnRemove.Size = new System.Drawing.Size(134, 23);
+ this.btnRemove.TabIndex = 7;
+ this.btnRemove.Text = "Remove";
+ this.btnRemove.UseVisualStyleBackColor = true;
+ this.btnRemove.Click += new System.EventHandler(this.btnRemove_Click);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(748, 450);
+ this.Controls.Add(this.gbDelete);
+ this.Controls.Add(this.gbUpdate);
+ this.Controls.Add(this.gbAdd);
+ this.Controls.Add(this.dgvProducts);
+ this.Name = "Form1";
+ this.Text = "Form1";
+ this.Load += new System.EventHandler(this.Form1_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.dgvProducts)).EndInit();
+ this.gbAdd.ResumeLayout(false);
+ this.gbAdd.PerformLayout();
+ this.gbUpdate.ResumeLayout(false);
+ this.gbUpdate.PerformLayout();
+ this.gbDelete.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.DataGridView dgvProducts;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox txtName;
+ private System.Windows.Forms.TextBox txtUnitPrice;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox txtStockAmount;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.GroupBox gbAdd;
+ private System.Windows.Forms.Button btnAdd;
+ private System.Windows.Forms.GroupBox gbUpdate;
+ private System.Windows.Forms.Button btnUpdate;
+ private System.Windows.Forms.TextBox txtNameUpdate;
+ private System.Windows.Forms.TextBox txtStockAmountUpdate;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.TextBox txtUnitPriceUpdate;
+ private System.Windows.Forms.TextBox txtIdUpdate;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.GroupBox gbDelete;
+ private System.Windows.Forms.Button btnRemove;
+ }
+}
+
diff --git a/AdoNetDemo/Form1.cs b/AdoNetDemo/Form1.cs
new file mode 100644
index 0000000..16b761f
--- /dev/null
+++ b/AdoNetDemo/Form1.cs
@@ -0,0 +1,75 @@
+using System;
+using System.Windows.Forms;
+
+namespace AdoNetDemo
+{
+ public partial class Form1 : Form
+ {
+ ProductDal _productDal = new ProductDal();
+ public Form1()
+ {
+ InitializeComponent();
+ }
+
+ private void Form1_Load(object sender, EventArgs e)
+ {
+ LoadProducts();
+ }
+
+ private void LoadProducts()
+ {
+ dgvProducts.DataSource = _productDal.GetAll();
+ }
+
+ private void btnAdd_Click(object sender, EventArgs e)
+ {
+ _productDal.Add(new Product
+ {
+ Name = txtName.Text,
+ UnitPrice = Convert.ToDecimal(txtUnitPrice.Text),
+ StockAmount = Convert.ToInt32(txtStockAmount.Text)
+ });
+ LoadProducts();
+ MessageBox.Show("Product Added!");
+ }
+
+ private void dgvProducts_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (dgvProducts.CurrentRow != null)
+ {
+ txtIdUpdate.Text = dgvProducts.CurrentRow.Cells[0].Value.ToString();
+ txtNameUpdate.Text = dgvProducts.CurrentRow.Cells[1].Value.ToString();
+ txtUnitPriceUpdate.Text = dgvProducts.CurrentRow.Cells[2].Value.ToString();
+ txtStockAmountUpdate.Text = dgvProducts.CurrentRow.Cells[3].Value.ToString();
+ }
+ }
+
+ private void btnUpdate_Click(object sender, EventArgs e)
+ {
+ if (dgvProducts.CurrentRow != null)
+ {
+ Product product = new Product
+ {
+ Id = Convert.ToInt32(dgvProducts.CurrentRow.Cells[0].Value),
+ Name = txtNameUpdate.Text,
+ UnitPrice = Convert.ToDecimal(txtUnitPriceUpdate.Text),
+ StockAmount = Convert.ToInt32(txtStockAmountUpdate.Text)
+ };
+ _productDal.Update(product);
+ }
+ LoadProducts();
+ MessageBox.Show("Updated!");
+ }
+
+ private void btnRemove_Click(object sender, EventArgs e)
+ {
+ if (dgvProducts.CurrentRow != null)
+ {
+ int id = Convert.ToInt32(dgvProducts.CurrentRow.Cells[0].Value);
+ _productDal.Delete(id);
+ }
+ LoadProducts();
+ MessageBox.Show("Deleted!");
+ }
+ }
+}
\ No newline at end of file
diff --git a/AdoNetDemo/Form1.resx b/AdoNetDemo/Form1.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/AdoNetDemo/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/AdoNetDemo/Product.cs b/AdoNetDemo/Product.cs
new file mode 100644
index 0000000..f0ccd63
--- /dev/null
+++ b/AdoNetDemo/Product.cs
@@ -0,0 +1,10 @@
+namespace AdoNetDemo
+{
+ public class Product
+ {
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public decimal UnitPrice { get; set; }
+ public int StockAmount { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/AdoNetDemo/ProductDal.cs b/AdoNetDemo/ProductDal.cs
new file mode 100644
index 0000000..d7eb046
--- /dev/null
+++ b/AdoNetDemo/ProductDal.cs
@@ -0,0 +1,95 @@
+namespace AdoNetDemo
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Data.SqlClient;
+ using System.Data;
+
+ public class ProductDal
+ {
+ SqlConnection _connection = new SqlConnection(@"Server=(localdb)\MSSQLLocalDB; Initial Catalog=ETrade; Integrated Security=True;");
+ public List GetAll()
+ {
+ ConnectionControl();
+ SqlCommand command = new SqlCommand("select * from products", _connection);
+ SqlDataReader reader = command.ExecuteReader();
+
+ List products = new List();
+ while (reader.Read())
+ {
+ Product product = new Product
+ {
+ Id = Convert.ToInt32(reader["Id"]),
+ Name = reader["Name"].ToString(),
+ StockAmount = Convert.ToInt32(reader["StockAmount"]),
+ UnitPrice = Convert.ToDecimal(reader["UnitPrice"])
+ };
+ products.Add(product);
+ }
+ reader.Close();
+ _connection.Close();
+
+ return products;
+ }
+
+ public DataTable GetAllDataTable()
+ {
+ if (_connection.State == ConnectionState.Closed)
+ {
+ _connection.Open();
+ }
+ SqlCommand command = new SqlCommand("select * from products", _connection);
+ SqlDataReader reader = command.ExecuteReader();
+
+ DataTable dataTable = new DataTable();
+ dataTable.Load(reader);
+ reader.Close();
+ _connection.Close();
+
+ return dataTable;
+ }
+
+ private void ConnectionControl()
+ {
+ if (_connection.State == ConnectionState.Closed)
+ {
+ _connection.Open();
+ }
+ }
+
+ public void Add(Product product)
+ {
+ ConnectionControl();
+ SqlCommand command = new SqlCommand("insert into products values(@Name, @UnitPrice, @StockAmount)", _connection);
+ command.Parameters.AddWithValue("@Name", product.Name);
+ command.Parameters.AddWithValue("@UnitPrice", product.UnitPrice);
+ command.Parameters.AddWithValue("@StockAmount", product.StockAmount);
+ command.ExecuteNonQuery();
+
+ _connection.Close();
+ }
+
+ public void Update(Product product)
+ {
+ ConnectionControl();
+ SqlCommand command = new SqlCommand("update products set Name=@Name, UnitPrice=@UnitPrice, StockAmount=@StockAmount where Id=@Id", _connection);
+ command.Parameters.AddWithValue("@Id", product.Id);
+ command.Parameters.AddWithValue("@Name", product.Name);
+ command.Parameters.AddWithValue("@UnitPrice", product.UnitPrice);
+ command.Parameters.AddWithValue("@StockAmount", product.StockAmount);
+ command.ExecuteNonQuery();
+
+ _connection.Close();
+ }
+
+ public void Delete(int id)
+ {
+ ConnectionControl();
+ SqlCommand command = new SqlCommand("delete from products where Id=@Id", _connection);
+ command.Parameters.AddWithValue("@Id", id);
+ command.ExecuteNonQuery();
+
+ _connection.Close();
+ }
+ }
+}
\ No newline at end of file
diff --git a/AdoNetDemo/Program.cs b/AdoNetDemo/Program.cs
new file mode 100644
index 0000000..fc820b0
--- /dev/null
+++ b/AdoNetDemo/Program.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace AdoNetDemo
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/AdoNetDemo/Properties/AssemblyInfo.cs b/AdoNetDemo/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..e1dd8dd
--- /dev/null
+++ b/AdoNetDemo/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("AdoNetDemo")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("AdoNetDemo")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("51e46e60-2b3f-4811-a8b5-6a9e2c7c206a")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/AdoNetDemo/Properties/Resources.Designer.cs b/AdoNetDemo/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..af069e5
--- /dev/null
+++ b/AdoNetDemo/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace AdoNetDemo.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // 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
+ {
+
+ 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()
+ {
+ }
+
+ ///
+ /// 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))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AdoNetDemo.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 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
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/AdoNetDemo/Properties/Resources.resx b/AdoNetDemo/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/AdoNetDemo/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/AdoNetDemo/Properties/Settings.Designer.cs b/AdoNetDemo/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..05f5176
--- /dev/null
+++ b/AdoNetDemo/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace AdoNetDemo.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/AdoNetDemo/Properties/Settings.settings b/AdoNetDemo/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/AdoNetDemo/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/CSharpCourse.sln b/CSharpCourse.sln
index d78d308..f8f3400 100644
--- a/CSharpCourse.sln
+++ b/CSharpCourse.sln
@@ -43,6 +43,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Collections", "Collections\
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Exceptions", "Exceptions\Exceptions.csproj", "{5EAE0080-32EF-47FD-9C95-543151DD22F6}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdoNetDemo", "AdoNetDemo\AdoNetDemo.csproj", "{51E46E60-2B3F-4811-A8B5-6A9E2C7C206A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -129,6 +131,10 @@ Global
{5EAE0080-32EF-47FD-9C95-543151DD22F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5EAE0080-32EF-47FD-9C95-543151DD22F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5EAE0080-32EF-47FD-9C95-543151DD22F6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {51E46E60-2B3F-4811-A8B5-6A9E2C7C206A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {51E46E60-2B3F-4811-A8B5-6A9E2C7C206A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {51E46E60-2B3F-4811-A8B5-6A9E2C7C206A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {51E46E60-2B3F-4811-A8B5-6A9E2C7C206A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE