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;


