Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 6 của 6
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Update SQL database từ datagridview

    _Mình có 1 form A gồm : 1 dataGridView, 1 button "Show",1 button "Update" và 1 cái database.Mình đã dùng sqlDataAdapter connect đươc và lấy được data trong bảng myTable hiển thị trên dataGridView.Nhưng lúc này mình muốn dùng chuột trực tiếp sửa(or thêm) thông tin của DataTable đang load trên dataGridView.
    _Mình nhấn update và thấy nó update thành công vì sau đó nhấn show lần nữa nó vẫn hiện lên thông tin của Row vừa thêm.Tuy nhiên mình phát hiện ra là, thông tin này ko đc lưu lại trên SQL database vì mở data của database thì ko có, vậy tại sao lại hiên đc trên DataTable ? tắt chuơng trình chạy lại vẫn còn thấy thông tin đc thêm đó, nhưng nếu mình gõ 1 dòng code vào file .cs or thêm 1 dòng enter vào là lập tức mất liền cái thông tin vừa thêm đó, ko còn thấy trên dataGridView thông qua nút Show nữa,như kiểu lưu rồi xóa cache vậy :|.

    Code mình đây :
    Mã:
    public Form1()
            {
                InitializeComponent();
            }
            string sqlstr="Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\database.mdf;Integrated Security=True;User Instance=True";
            DataTable dt;
            SqlDataAdapter sqlAdapter;
            void filldata(string strCon)
            {
                SqlConnection sqlCon = new SqlConnection(strCon);
                string strQuery="select * from myTable";
                sqlAdapter = new SqlDataAdapter(strQuery, sqlCon);
                dt = new DataTable();
                sqlAdapter.Fill(dt);
            }
            private void button1_Click(object sender, EventArgs e)
            {
                filldata(sqlstr);
                this.dataGridView1.DataSource = dt;
            }
            private void button2_Click(object sender, EventArgs e)
            {
                SqlCommand sqlCom = new SqlCommand();
                sqlCom.CommandText="select * from myTable";
                sqlCom.Connection=new SqlConnection(sqlstr);
                sqlAdapter=new SqlDataAdapter(sqlCom);
                SqlCommandBuilder sqlComB=new SqlCommandBuilder(sqlAdapter);
                sqlAdapter.Update(dt);
            }
    +Vậy giờ phải làm sao để update đc chính xác cái dataTable vào database? mò mẫm sáng giờ pótay đành nhờ mọi người giúp đỡ.
    +Nếu đc mình send kèm cái project chạy trên VS2008 ai sửa lại chạy đúng chức năng mình muốn mình rất cảm ơn.Mình sẽ tự tham khảo và hiểu code.
    Thanks!

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mìng đã test thử !
    OK rùi !
    Bạn thử xem thế nào
    Chúc thành công !
    Mã nguồn PHP:
    public Form1() { InitializeComponent(); } DataSet ds=new DataSet(); SqlDataAdapter da; SqlCommandBuilder combui; SqlConnection con; private void Form1_Load(object sender, EventArgs e) { LoadData(); } private void LoadData() { string strcon = "Data Source=.\\SQLEXPRESS;Database=NhanVien;Integrated Security=true;"; con = new SqlConnection(strcon); da = new SqlDataAdapter("select * from NhanVien", con); da.Fill(ds, "NhanVien"); gridNhanVien.DataSource = ds.Tables["NhanVien"]; MessageBox.Show("Loaded OK"); } private void btnSave_Click(object sender, EventArgs e) { combui = new SqlCommandBuilder(da); da.Fill(ds, "NhanVien"); //NhanVien là tên báng da.Update(ds, "NhanVien"); MessageBox.Show("Update OK"); } private void btnLoad_Click(object sender, EventArgs e) { LoadData(); }  

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dangbk
    Mìng đã test thử !
    OK rùi !
    Bạn thử xem thế nào
    Chúc thành công !
    Mã nguồn PHP:
    public Form1() { InitializeComponent(); } DataSet ds=new DataSet(); SqlDataAdapter da; SqlCommandBuilder combui; SqlConnection con; private void Form1_Load(object sender, EventArgs e) { LoadData(); } private void LoadData() { string strcon = "Data Source=.\\SQLEXPRESS;Database=NhanVien;Integrated Security=true;"; con = new SqlConnection(strcon); da = new SqlDataAdapter("select * from NhanVien", con); da.Fill(ds, "NhanVien"); gridNhanVien.DataSource = ds.Tables["NhanVien"]; MessageBox.Show("Loaded OK"); } private void btnSave_Click(object sender, EventArgs e) { combui = new SqlCommandBuilder(da); da.Fill(ds, "NhanVien"); //NhanVien là tên báng da.Update(ds, "NhanVien"); MessageBox.Show("Update OK"); } private void btnLoad_Click(object sender, EventArgs e) { LoadData(); }  
    Bạn có chỉnh gì cho database hay không ? vì mình vừa thử code của bạn, tình trạng giống y chang code mình.bấm Load rồi Edit sau đó bấm save thì "Update OK" và Load lại thì vẫn có cái dòng mới đó nhưng thật chất trong CSDL ko có dòng vừa thêm đó.Chương trình tắt đi mở lại vẫn thấy nhưng thay đổi vài dòng code file .cs or chỉ enter đại 1 vị trí nào trong file .cs là dữ liệu vừa thêm đó mất ngay.Có lẽ cái database của mình có vấn đề chăng :|

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Mình thử xóa và update 1 vài đòng trong Gridview rồi vào SQL server dùng mấy câu truy vấn kiểm tra thì thấy OK mà
    Còn cái code trên của tớ chỉ có lỗi là chưa ClearDatagrid trước khi load tiếp thôi
    Nếu nhấn LoadData vài lần thì cả đống dữ liệu sẽ được đưa lên thôi
    Bạn thử kiểm tra lại xem nhé

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi dangbk
    Mình thử xóa và update 1 vài đòng trong Gridview rồi vào SQL server dùng mấy câu truy vấn kiểm tra thì thấy OK mà
    Còn cái code trên của tớ chỉ có lỗi là chưa ClearDatagrid trước khi load tiếp thôi
    Nếu nhấn LoadData vài lần thì cả đống dữ liệu sẽ được đưa lên thôi
    Bạn thử kiểm tra lại xem nhé
    hix có thể cho mình xin nguyên file project không.Mình thử đi thử lại nãy giờ vẫn thế, cái vụ clear datagridview thì ko sao.
    thanks bạn rất nhiều

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn vào hẳn trong CSDL dùng các câu query để kiểm tra cho chắc nhé
    Chúc thành công !

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •