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

No comments:

Post a Comment