Monday, November 30, 2015

C# Basic

1.     2 хэмжээст массивт санамсаргүй утга олгох:
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("=> Rectangular multidimensional array.");
            // A rectangular MD array.
            int[,] myMatrix;
            Random r = new Random();
            myMatrix = new int[6, 6];
            // Populate (6 * 6) array.
            for (int i = 0; i < 6; i++)
                for (int j = 0; j < 6; j++)
                    myMatrix[i, j] = r.Next(100);
            // Print (6 * 6) array.
            for (int i = 0; i < 6; i++)
            {
                for (int j = 0; j < 6; j++)
                    Console.Write(myMatrix[i, j] + "\t");
                Console.WriteLine();
            }
         
            Console.ReadLine();
        }
    }

2. Introduction to C# method
  • Pass by Reference , Output and params Parameter in Method
  • Method Overloading in C
            // Valiables
            int k = 0;
            int a = 10;
            int b = 20;
            int c = 0, d = 0;
            string[] myArray = new string[4];
            myArray[0] = "Azaa";
            myArray[1] = "Bataa";
            myArray[2] = "Zoloo";
            myArray[3] = "Azaa";

            // method 1
            saam(k);
            Console.WriteLine(k);
            // method 2
             sum(ref a, ref b);
             Console.WriteLine(a + " " + b);

            // method 3
             method2(a, b, out c, out  d);
             Console.WriteLine("Sum is : {0} and Prod is : {1}", c, d);

            // method 4
             Amethod();
             Amethod("n1", "n2", "n3");
             Amethod(myArray);
            Console.ReadKey();
        }
        public static void saam(int x)
        {
            x = 10;
        }
        public static void sum(ref int x, ref  int y)
        {
            int c = x;
            x = y;
            y = c;
        }
        public static void method2(int a, int b, out int sum1, out int sum2)
        {
            sum1 = a + b;
            sum2 = a * b;
        }
        public static void Amethod(params string[] names)
        {
            foreach (string a in names)
                Console.WriteLine(a);
            Console.WriteLine("Array Size = {0}", names.Length);
        }

3. Polymorphism in C#
Example 1:
    class Box{
        public virtual void Display()
        {
            Console.WriteLine("Box Class");
        }
    }
    class Circle : Box
    {
        public override void Display()
        {
            //base.Display();
            Console.WriteLine("Circle Class");
        }

    }
    class Line : Box
    {
        public override void Display()
        {
            //base.Display();
            Console.WriteLine("Line Class");
        }
    }

    class Point : Box
    {
        public new void Display()
        {
            //base.Display();
            Console.WriteLine("Point Class");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {

            Box[] b = new Box[3];
            b[0] = new Box();
            b[1] = new Circle();
            b[2] = new Line();

            foreach (Box a in b)   a.Display();
            Box c = new Point();
            c.Display();
            Console.ReadKey();
        }
    }
Polymorphism Example 2:
Animal class:
class Animal
    {
        string type;
        string color;
        string weight;
        string height;
        int age;
        int numofLegs;

        public int Age{
            get { return this.age; }
            set { this.age = value; }

        }
        public virtual void move()
        {
            Console.WriteLine("Animal Moved!");
        }
        public void makenoise()
        {
            Console.WriteLine("Animal Made noise!");
        }
    }  
Dog Class:
class Dog : Animal
    {
        string name;
        string owner;

        public override void move()
        {
            Console.WriteLine("Dog moved!");
        }

    }
Main Program:
 class Program
    {
        static void Main(string[] args)
        {
            Dog d = new Dog();
            d.Age = 13;
            Console.WriteLine(d.Age);
            d.move();
            d.makenoise();

            Console.ReadLine();
        }
    }


4. Properties / getter, setter /
    class Box{
        private int id;
        private string author;

        public int ID { get; set; }
        public string Author { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Box b = new Box();
            b.ID = 11;
            b.Author = "Zoloo";
           Console.WriteLine("book id is {0}, author is {1}", b.ID, b.Author);
            Console.ReadKey();
        }
    }
5. Abstract Class and Interface in C#
Interface example:
namespace Tutorial2
{
    interface IMeter1
    {
        void print1();
    }
    interface IMeter2
    {
        void print2();
    }
    class Meter : IMeter1, IMeter2
    {
        public void print()
        {
            Console.WriteLine("Hello Class");
        }
        void IMeter1.print1()
        {
            Console.WriteLine("Hello Interface 1");
        }
        void IMeter2.print2()
        {
            Console.WriteLine("Hello Interface 2");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IMeter1 met1 = new Meter();
            IMeter2 met2 = new Meter();
            Meter m = new Meter();
            m.print();
            met1.print1();
            met2.print2();
            Console.ReadKey();
        }
    }
}

Abstract class:
namespace Tutorial2
{
    abstract class Meter
    {
        public int a;
        public abstract void printer();

        public void printer2()
        {
            Console.WriteLine("Abstract printer 2");
        }
    }

    class Program : Meter
    {
        public override void printer()
        {
            Console.WriteLine("Abstract printer 1");
        }
        static void Main(string[] args)
        {
            Program p = new Program();
            p.printer();
            p.printer2();
            p.a = 12;
            Console.ReadKey();
        }
    }
}
6. Delegates in C#
Simple Delegate Example
namespace Tutorial2
{
   
    public delegate int addNumdelegate(int n1, int n2);
    class Program
    {
        public static int addNum(int n1, int n2)
        {
            return n1 + n2;
        }
        public static int subNum(int n1, int n2)
        {
            return n1 - n2;
        }
        static void Main(string[] args)
        {
            addNumdelegate ad1 = new addNumdelegate(addNum);
            int r = ad1(15, 16);
            addNumdelegate ad2 = new addNumdelegate(subNum);
            int r2 = ad2(18, 15);
            Console.WriteLine(r);
            Console.WriteLine(r2);
            Console.ReadKey();
        }
    }

}
хэрэг болох линкийг оруулав: https://www.youtube.com/watch?v=Lf49f_-ZqX8

Sunday, November 29, 2015

How to connect sql server to winform application

Өнөөдрийн пост бичлэгээр өгөгдлийн сантай холбосон жижииг программын кодыг бичихээр боллоо.
1.      Form дээр datagridview болон 5 текстбокс / 1 нь хайлт хийх /, 3 / insert, update, delete /товч байрлууллаа. Button-ны backgroundImage-д логогоо оруулж, backgroundImageLayout-г Center болгож өгнө.
2.      Одоо өгөгдлийн баазаа дараах байдлаар зохион байгуулана.
Id      -   varchar(50)
Firstname – varchar(50)
Lastname – varchar(50)
age – int

Table
нэрээ alumno гэж өглөө.
3.      Өгөгдлийн баазаа visual studio-тойгоо дараах байдлаар холбоно.
Project > Add New Data Source
Database -> Next -> Data Set -> New Connection - > SQL Server
Server Name
– дээр өгөгдлийн сангийн нэрийг бичнэ.
Жишээ нь: PC-NAME\SQLEXPRESS
Select or enter a database name:
дээр байгуулсан өгөгдлийн баазаа сонгоно.
Т
est Connection > OK -> Next
Өгөгдлийн сангийн table-аа сонгоод Next хийнэ.
4.      Одоо шинээр класс үүсгэнэ.
using System.Data.SqlClient;

class alumno {
SqlConnection miCon;
public void Connecter(){
miCon = new SqlConnection(“
Энэ хэсэгт  өгөгдлийн сангийн properties ->  Data Soure хэсгийн хуулж тавина. \\ хаалтыг мартаж болохгүй! ”);
miCon.Open();
}
public void Disconnecter(){
miCon.Close();
}
public void EjectSql(String query){
SqlCommand miCommand = new SqlCommand(quert,  this.miCon);
int checker = miCommand.ExecuteNonQuery();
if(checker > 0)
Messagebox.Show(“Connected!”);
 else MessageBox.Show(“Cant Connected!”);
}
public void ActualGrid(DataGridView dg, String Query){
DataSet ds = new DataSet();
this.Connecter();
SqlDataAdapter Da = new SqlDataAdapter(Query, miCon);
Da.Fill(ds, “alumno”);
dg.DataSource = ds;
dg.DataMember = “alumno”;
this.Disconnecter();
}
}
5.      Одоо үндсэн цонхны Form_Load үзэгдэл дээр классаа дуудана.
alumno ob = new alumno();
ob.ActualGrid(this.datagridview1, “select * from alumno”);
6.      Datagridview дээр дараах тохиргоонуудыг хийнэ.
Datagridview -> ReadOnly = true;
 
SelectionMode-> FullRowSelect
AllowUserToAddRows = false;
ColumnHeadersHeightSIzeMode = AutoSize
7.      Alumno alData = new alumno();
нэмэх функцын код дээр
{
alData.connecter();
String Query = “Insert  into alumno (id, firstname, lastname, age) values (“ + txt_id.Text + “’,’” + txt_fname + “’, ‘” + txt_lname + “’,’” + txt_age “);”;
alData.EjectSql(Query);
// table refresh
alData.ActualGrid(this.datagridview1, “select * from alumno;”);
alData,Disconnecter();
this.clearText();
}
public void clearText(){
 txt_id = “”;
txt_fname =””;
txt_lname =””;
txt_age=””;
}
8.      Update хийх товчны үзэгдэл дээр:
String s_id=””;
boolean editar;
{

editar = true;
s_id = this.datagridview1.CurrentRow.Cells[0].Value.ToString();

txt_fname.Text = this.datagridvew1.CurrentRow.Cells[1].Value.ToString();
txt_lname.Text = this.datagridview1.CurrentRow.Cells[2].value.ToString();
txt_age.Text = this.datagridview1.CurrentRow.Cells[3].value.ToString();
}

Form_Load
үзэгдэл дээр editar = false; болгоно.
Insert товчны үзэгдэл дээр засвар орсон эсэхийг шалгаад нэмж хадгалах кодыг бичнэ.
// нэмэх товчны код дээр нэмж бичих
if(editar) {
alData.Connecter();
String Query = “update alumno set firstname =’” + txt_fname.Text + “’, lastname =’“ + txt_lname.Text + “’, age = “  + txt_age.Text “ where id =  ‘“ + s_id + “’;”;
alData.EjectSql(Query);
alData.ActualGrid(this.datagridview1, “select * from alumno;”);
alData.Disconnect();
this.clearText();
editar = false;
}
9.      Одоо баазаа хайлт хийх кодыг бичнэ. Search хийх текстбокс байгаа ба түүний KeyUp үзэгдэл дээр код бичнэ.
alData.ActualGrid(this.datagridview1, “select  * from alumno where firstname like ‘” + txt_Search.Text + “%’;”);

10.  Одоо Delete button-ны кодыг бичвэл:
{

s_id = this.datagridview1.currentRow.Cells[0].Value.ToString();
var res = Messagebox.Show(“Are you sure to Delete?”,”Confirm”, MessegeBoxButtons.YesNo, MessageBoxIcon.Question);
if( res == DialogResult.Yes){
alData.Connecter();
String query = “delete * from alumno where id=”’ + s_id + “’;
 alData.EjectSql(query);
alData.ActualGrid(this.datagridview1, “select  * from alumno;”);
alData.Disconnecter();
}



How to Make a Calculator in C#

Өнөөдрийн пост бичлэгээр visual studio дээр C# хэл ашиглан тооны машин хийх хялбархан жишээ оруулахаар боллоо.

1.       Эхлээд тооны машиныхаа загварыг гаргаж өрөөд дэлгэцийн төв хэсэгт гаргадаг болгоё.
Maximizebox – False, StartPosition – CenterScreen, FormBorderStyle – FixedSingle or
/ FixedDialog / болгоно.
2.       Form-н текстийг Calculator болгож, тооны машиныхаа Icon-г зааж өгнө.
Icon-г www.iconarchive.com сайтнаас ICO өргөтгөлтэй татаж авна.
3.       Тооны машиныхаа товчнуудыг 5x4 хэмжээтэй байрлуулж өгнө. Size-45, 45; Font-Bold, 14px;
4.       TextBox болон Label байрлуулж, Font-Bold, 14px болгоно. ТextAlign - Right
Label-н BackColor-Window, ForeColor - ButtonShadow
5.       Тоо хэвлэх товч болгоно үзэгдэг дээр дараах функцын нэрийг хуулж бичиж, Button-ClickEvent дээр товч дарахад хэвлэх функцыг бичнэ:

private void button_click(object sender, EventArgs e)
{
// textbox-н эхэнд 0 хэвлэж байгааг хасах
if(textbox1.Text == “0” || (isOperationPerformed ))
textbox1.Clear();
     isOperationPerformed = true;
     Button  button =(Button) sender;
if( button.Text ==”.”)
{
          if(!textbox1.Text.Contains(“.”))
           textbox1.Text = textbox1.Text + button.text;
} else
     textbox1.Text = textbox1.Text + button.text;
}
6.       Одоо үйлдэл хийх 4 тэмдэгтийн кодыг бичнэ. Үүний өмнө дээр
Double resultValue = 0,
String operationPerformed = “”; 
bool isOperationPerformed = false;
хувьсагч зарлана
private void operation_click(object sender, EventArgs e)
{
  Button  button =(Button) sender;
if (resutlValue!=0)
{
// tentsuu button event
 button15.PerformClick();
  operationPerformed = button.text;
label1.Text = resultValue + “ “ + operationPerformed;
  isOperationPerformed = true;
} else
{
  operationPerformed = button.text;
  resultValue = Double.Parse(textbox1.Text);
label1.Text = resultValue + “ “ + operationPerformed;
  isOperationPerformed = true;
}
}
7.       CE болон С товчны үзэгдэл дээр дараах кодыг бичнэ:

СЕ – үзэгдэл дээр:
textbox1.Text = “0”;
C – үзэгдэл дээр: textbox1.Text = “0”; resultValue  = 0;
8.       Одоо тэнцүү товчны үзэгдэл дээр дараах кодыг бичнэ:

{
switch ( operationPerformed )
{  
case “+”:  textbox1.Text = (resultValue  + Double.Parse(textbox1.text)).ToString();
           break;
case “-”:  textbox1.Text = (resultValue  - Double.Parse(textbox1.text)).ToString();
           break;
case “*”:  textbox1.Text = (resultValue  * Double.Parse(textbox1.text)).ToString();
           break;
case “/”:  textbox1.Text = (resultValue  / Double.Parse(textbox1.text)).ToString();
           break;
default:
          break;
}
resultValue  = Double.Parse(textbox1.Text);
label1.Text =“”;
}

Monday, November 9, 2015

How to connect to SQL Database with C#

Энэ удаагийн пост бичлэгээр Visual Studio 2012 болон MSSQL server management studio 2012 ашиглан өгөгдлийн сантай холбосон жижиг хэмжээний виндоуз програмын тухай бичье:
Жишээ загвар:
  1. Мэдээж дээр дурсан Microsoft Visual Studio 2012 болон SQL management studio-гоо суулгасан байх шаардлагатай ба хэрхэн суулгах талаар өмнөх пост дээр бичсэн байгаа.
  2. Програм боловсруулахын өмнө системийн зохиомжыг гаргах ба өгөгдлийн сангийн зохион байгуулалтыг сайтар төлөвлөж хийх нь зүйтэй юм. Энэхүү постын хувьд эхлээд Өгөгдлийн баазаа дараах байдлаар үүсгэлээ:

    New Query:
    USE DBname
    GO

    CREATE TABLE tblContacts(
    ID INT IDENTITY NOT NULL,
    FIRSTNAME VARCHAR(100),
    LASTNAME VARCHAR(100))

    SELECT *FROM tblContacts
  3. Одоо Визуал студиогоо нээгээд 2 текстбокс, нэг товч, датагридвиүв тавиад дараах кодыг бичъе.
    DataSet ds = new DataSet();

    SqlConnection cs = new SqlConnection("Data Source = PC-NAME; Initial Catalog = DBname;  Integrated Security = TRUE");

    SqlDataAdapter ds = new SqlDataAdapter();
  4. Дараа нь товчны үзэгдэл дээр өгөгдлийн санд нэмэх кодыг бичвэл:

    da.InsertCommand = new SqlCommand("INSERT INTO tblContacts VALUES(@FIRSTNAME, @LASTNAME)", cs);
    da.InsertCommand.Parameters.Add("@FIRSTNAME", SqlDbType.VarChar).Value = txtFirstname.Text;
    da.InsertCommand.Parameters.Add("@LASTNAME", SqlDbType.VarChar).Value = txtLastname.Text;
    cs.Open();
    da.InsertCommand.ExecuteNonQuery();
    cs.Close();
  5. Display буюу DataGridView дээр хэвлэж харуулах товч үүсгээд дараах кодыг бичиж үзвэл:

    ds.SelectCommand = new SqlCommand("SELECT * FROM tblContacts", cs);
    ds.Clear();
    da.Fill(ds);
    // datagridview1-ийг dg гэж бичэв
    dg.DataSourse = ds.Tables[0];
  6. BindingSource ашиглаж DataSet-г удирдах тухай: (First, Previous, Next, Last)
    // zarlah
    BindingSource tblNamesbs = new BindingSource();

    // Display function dr nemj bichih
    tblNamesbs.DataSource = ds.Table[0];
    txtFistname.DataBindings.Add(new Binding("Text", tblNamesbs, "Firstname"));
    txtLastname.DataBindings.Add(new Binding("Text", tblNamesbs, "Lastname"));
    // First, Prev, Next, Last  4 button Form deer nemne.
    // тус бүрийн үзэгдэл дээр дараах кодыг бичнэ.
    tblNamesbs.MoveNext()
    tblNamesbs.MovePrevious();
    tblNamesbs.MoveFirst();
    tblNamesbs.MoveLast();
    // datagridview-н мөрний сонголтыг засах
    // шинээр функц зохиож бичэв.
    private void dgUpdate()
    {
        dg.ClearSelection();
        dg.Rows[tblNamesbs.Position].Selected = true; 
    }
    // дээрх 4 товч бүрийн үзэгдэл үүссэн кодны доор дараах функцээ нэмж бичнэ.

    // Формын доод буланд label нэмнэ.
    private void records()
    {
        label.text = "Record " + tblNamesbs.Position + " of " + (tblNamesbs.Count - 1);
    }
    // дээр функцийг 4 товчны үзэгдэл болон Display товчны кодонд нэмж бичнэ.
  7. Update хийх тухай
    Update гэсэн товч нэмж байрлуулна. Товчны үзэгдэл үүсгээд дараах кодыг бичнэ.

    int x;
    da.UpdateCommand = new SqlCommand("UPDATE tblContacts SET FIRSTNAME = @FIRSTNAME, LASTNAME = @LASTNAME WHERE ID = @ID", cs);

    da.UpdateCommand.Parameters.Add("@FIRSTNAME", SqlDbType.VarChar).Value = txtFirstName.text;
    da.UpdateCommand.Parameters.Add("@LASTNAME", SqlDbType.VarChar).Value = txtLastName.text;

    da.UpdateCommand.Parameters.Add("@ID", SqlDbType.Int).Value = ds.Tables[0].Rows[tblNamesbs.Position][0];

    cs.Open();
    da.UpdateCommand.ExecuteNonQuery();
    cs.Close();
    if(x>=-1)
       MessageBox.show("Record(s) has been updated");
  8. Deleting data from SQL

    //  Delete товчийг нэмж байрлуулана.
    //  товчны үзэгдэл дээр дараах кодыг бичнэ.

    DialogResult dr ;
    dr = MessageBox.show("Are you sure?\nThere is no undo once data is deleted", "Confirm Deletion", MessageboxButtons.YesNo);
    if( dr == DialogResult.Yes)
    {
    da.DeleteCommand = new SqlCommand("DELETE FROM tblContacts WHERE ID = @ID", cs);
    da.DeleteCommand.Parameters.Add("@ID", SqlDbType.Int).Value = ds.Tables[0].Rows[tblNamesbs.Position][0];

    cs.Open();
    da.UpdateCommand.ExecuteNonQuery();
    cs.Close();  
    /// refresh table
    ds.Clear();
    da.Fill(ds);
    }

    Program Screen:

    video link: https://www.youtube.com/playlist?list=PL364D9F01461F5F87