Giúp đỡ về update dữ liệu trên database C#

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi dhl012, 31/5/09.

  1. dhl012

    dhl012 C O N T R A

    Tham gia ngày:
    21/1/07
    Bài viết:
    1,755
    Nơi ở:
    vô tỉnh
    Mã:
            public void CapNhatSach(SachDTO sDto)
            {
                OleDbConnection cn;
                cn = DataProvider.ConnectionData();
                string strSQL;
                strSQL = "Update SACH Set MaTheLoai = ? and MaTacGia = ? and TenSach = ? and GiaBan = ? and SoLuongTon = ?  Where MaSach =? ";
                OleDbCommand cmd = new OleDbCommand(strSQL, cn);
                cmd.Parameters.Add("@MaTheLoai", OleDbType.Integer);
                cmd.Parameters.Add("@MaTacGia", OleDbType.Integer);
                cmd.Parameters.Add("@TenSach", OleDbType.VarWChar);
                cmd.Parameters.Add("@GiaBan", OleDbType.Double);
                cmd.Parameters.Add("@SoLuongTon", OleDbType.Integer);
                cmd.Parameters.Add("@MaSach", OleDbType.Integer);
    
                cmd.Parameters["@MaTheLoai"].Value = sDto.MaTheLoai;
                cmd.Parameters["@MaTacGia"].Value = sDto.MaTacGia;
                cmd.Parameters["@TenSach"].Value = sDto.TenSach;
                cmd.Parameters["@GiaBan"].Value = sDto.GiaBan;
                cmd.Parameters["@SoLuongTon"].Value = sDto.SoLuongTon;
                cmd.Parameters["@MaSach"].Value = sDto.MaSach;
                cmd.ExecuteNonQuery();
                cn.Close();
            }
    Mình có đoạn code trên, đoạn code không có gì sai. Nhưng khi cập nhật dữ liệu. MaTheLoai ở dòng sách được cập nhật, sau khi cập nhật nó bằng 0 hoặc -1.
    Mình không biết lỗi gì xảy ra. Nếu đem đoạn code trên qua một solutionkhác thì chạy đúng.
    Chẳng là mình và bạn mình cùng làm 1 đề tài, 2 đứa code khác nhau nhưng những đoạn code cơ bản như trên thì chắc ai cũng giống ai.
    Bài bạn mình dùng datatable làm datasource cho dataGridview và có lỗi như trên. Còn bài mình dùng List để hiển thị lên dataGridView và chạy ngon lành. Có lẽ đó là sự khác biệt duy nhất giữa 2 bài. Nên không biết nó có liên quan gì tới lỗi hay không?
     
  2. tomorrowneverdies

    tomorrowneverdies Bạch Diện Thư Sinh

    Tham gia ngày:
    6/6/02
    Bài viết:
    4,306
    Nơi ở:
    The World Of Games
    Cái này là do sai câu truy vấn SQL thôi bạn. Bạn sửa:
    Mã:
    strSQL = "Update SACH Set MaTheLoai = ? and MaTacGia = ? and TenSach = ? and GiaBan = ? and SoLuongTon = ?  Where MaSach =? ";
    
    Thành
    Mã:
    strSQL = "Update SACH Set MaTheLoai = ?, MaTacGia = ?, TenSach = ?, GiaBan = ?, SoLuongTon = ?  Where MaSach =? ";
    
     
  3. dhl012

    dhl012 C O N T R A

    Tham gia ngày:
    21/1/07
    Bài viết:
    1,755
    Nơi ở:
    vô tỉnh
    ủa vậy sao 2 chương trình mình cùng dùng 1 câu truy vấn, 1 cái chạy đúng còn 1 cái chạy sai nhỉ :-?
     

Chia sẻ trang này