Cái này trước đây có người hỏi rồi, bạn có thể tìm lại để tham khảo thêm. Các bạn lưu ý khi hỏi nên nói càng chi tiết càng tốt (bạn đang dùng Database loại gì, và vì sao bạn phải khổ sở đi load và add từng dòng như vậy, lại có cả progressBar nữa, chắc chỉ là để cho đẹp thôi đúng không?)...
Bạn thử từ bỏ thói quen dùng OleDbDataAdapter và hãy dùng SqlDataAdapter xem sao? Tất cả các câu truy vấn hay thêm sửa xóa đều nên viết Store ở ngoài, luôn luôn là như vậy. Linh hoạt, gọn gàng, cực nhanh. Đây là một ví dụ:
PHP Code:
using System.Data.SqlClient;
PHP Code:
int intFact1 = 0; //Bien chua gia tri truyen vao tham so trong Store
System.Data.DataTable tmpDataTb = new System.Data.DataTable();
//De biet chinh xac chuoi Connection, hay tao moi mot //DataBindingSource cho DatagridView, no se tu dong sinh ra chuoi nay, //copy va paste vao la xong
SqlConnection con1 = new SqlConnection("Data Source=.;Initial Catalog=Test;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.Connection = con1;
cmd.CommandType = CommandType.StoredProcedure;
con1.Open();
cmd.CommandText = "Project_Input"; //Tên Store Proc
PHP Code:
//Khai bao cac tham so truyen vao Store Proc (neu co)
//Phai dat ten tham so @Factor1 giong het ten trong Store
cmd.Parameters.Add("@Factor1", SqlDbType.Int);
cmd.Parameters["@Factor1"].Value = intFact1;
PHP Code:
//Lay data ra DataAdapter
SqlDataAdapter tmpAdapter = new SqlDataAdapter(cmd);
//Do du lieu vao bang
tmpAdapter.Fill(tmpDataTb);
dataGridView1.DataSource = tmpDataTb;
//dataGridView1.Update();
con1.Close();
Nếu gặp khó khăn, cứ mạnh dạn nêu ra nhé.
Good luck!