ADO.NET

Giao diện:



Các bước để kết nối với database (Giả sử đã có sẵn database AdventureWorks2012 trong SQL server)
Type đoạn code sau vào hàm khởi tạo để mở kết nối với database:
            string connectionString = "Data Source=HOANGLONG\\HL-                  PC;Database=AdventureWorks2012 ;Integrated Security=SSPI";
            sqlconProductDetails = new SqlConnection(connectionString);
            sqlcomProductDetails = new SqlCommand();

Khi chạy chúng ta sẽ gọi phương thúc load form trước(tạo event load_form cho form trên):
                        try
            {
                ClearControls();
                // gọi phương thức ClearControl để xóa các controls khác nhau trong form.
                if (sqlconProductDetails.State==ConnectionState.Open)
                    // kiểm tra xem kết nối tới cơ sở dữ liệu SQL Server có mở k  nếu như đã mở thì sẽ đóng lại
                    // Kiểu như refresh 
                {
                    sqlconProductDetails.Close();
                }
                sqlconProductDetails.Open();
                sqlcomProductDetails.CommandText = "select * from tblProductDetails";
                // SQLCommand sẽ gọi câu lệnh select thông qua CommandText
                sqlcomProductDetails.Connection = sqlconProductDetails;
                // gán command kết nối tới SQlConnection đang có 
                sqldreaderProductDetails = sqlcomProductDetails.ExecuteReader();
                 // SqlDataReader , đọc những thứ gì mà SqlCommand đã select ra 
                if (sqldreaderProductDetails.HasRows)
                    // Kiểm tra xem SQLDataReader có đọc được dòng nào k
                {
                    sqldreaderProductDetails.Read();
                    // Nếu có thì nó sẽ đọc bản ghi đầu tiên trong list
                    DisplayResult();
                    // gán dữ liệu đọc được vào textbox
                    if (sqldreaderProductDetails.Read())
                        // Nếu có nhiều bản ghi trong list
                    {
                        btnNext1.Enabled = true; 
                        btnNext2.Enabled = true;
                        // Sẽ cho 2 nút Next hiện 
                        rowNumber = rowNumber + 1;
                        // tăng số dòng lên 1
                        btnBack1_Click(null, null);
                    }
                    else
                    {
                        btnNext1.Enabled = false;
                        btnNext2.Enabled = false;
                        btnBack1.Enabled = false;
                        btnBack2.Enabled = false;
                        // Nếu như không có dữ liệu trong db thì các nút next và back sẽ bị ẩn đi 
                    }
                    btnEdit.Enabled = true;
                    btnDelete.Enabled = true;
                    // Nếu có dữ liệu thì nút Edit và Delete sẽ được bật lên
                }
                else
                {
                    DisableButtons();  // Nếu như lúc mở form chưa có dữ liệu thì tất cả các nút sẽ bị ẩn đi
                }
                btnCancel.Enabled = false;
                btnSave.Enabled = false;
                btnAddnew.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problem while connecting to database", "Product Details", MessageBoxButtons.OK, MessageBoxIcon.Error);
                sqlconProductDetails.Close();
                // Khi có lỗi sẽ đóng kết nối với db
                txtBuiltyear.Text = ex.ToString();
            }

Button Next, Previous có nhiệm vụ mở thông tin của sản phẩm tiếp theo hoặc sau đó.
Button Next có event Click sẽ đưa ra sản phẩm tiếp theo, khi đến sản phẩm cuối cùng thì sẽ set Enabled Property của button này thành false:

             if (sqldreaderProductDetails.Read())  // Kiểm tra xem có dữ liệu k
            {
                // Nếu có thì số dòng + 1 và phương thức DisplayResult được gọi để hiển thị bản ghi 
                rowNumber += rowNumber; 
                DisplayResult();
            }
            else
            {
                // Nếu như không có bản thì sẽ thông báo và sẽ ẩn 2 nút next 
                MessageBox.Show("This is the last record", "Product Details", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnNext1.Enabled = false;
                btnNext2.Enabled = false;
            }
            // Hiển thị 2 nút back
            btnBack1.Enabled = true;
            btnBack2.Enabled = true;

Button Xem bản ghi cuối cùng có event Click có nhiệm vụ xem bản ghi cuối cùng của bảng sản phẩm. Khi đó, button Next sẽ bị set Properties Enabled thành false:
                if (!sqldreaderProductDetails.IsClosed) // kiểm tra xem SqlDataReader có mở không
            {
                sqldreaderProductDetails.Close();
                // Nếu như có sẽ bị đóng lại
            }
            sqldreaderProductDetails = sqlcomProductDetails.ExecuteReader();
            // SqlDataReader (off) sẽ đọc bản ghi đầu tiên khi mà CommandText select
            if (rowNumber!=0) // Nếu như số dòng khác 0 
            {
                // thì nó sẽ gán số dòng về 0 và hiển thị bản ghi
                sqldreaderProductDetails.Read();
                DisplayResult();
                rowNumber = 0;
            }
            else
            {
                MessageBox.Show("This is the first record", "Product Details", MessageBoxButtons.OK, MessageBoxIcon.Information);
                sqldreaderProductDetails.Read();
            }
            btnBack2.Enabled = false;
            btnBack1.Enabled = false;
            btnNext1.Enabled = true;
            btnNext2.Enabled = true;

0 nhận xét:

Đăng nhận xét

 
Copyright © Pha Quế Domination