Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Bắt lổi khi thực hiện Delete trong c# báo lổi ràng buộc khóa

  1. #1
    Ngày gia nhập
    09 2010
    Bài viết
    3

    Mặc định Bắt lổi khi thực hiện Delete trong c# báo lổi ràng buộc khóa

    Các bạn mến !
    Mình là người mới tập tành học lập trình thành ra còn gà Mình có 1 vấn đề muốn nhờ các bạn chỉ giáo
    Mình tạo 1 form để thêm sữa xóa hocvien . bảng hocvien có liên kết khóa ngoại với bảng bienlaihocphi và bảng hocvien_lophoc (qua khóa mahv)
    ,khi mình code nút xóa chạy thì báo lổi còn có ràng buộc khóa với table khác mà mình không biết bắt lổi ntn Ai đã làm rùi có thể giúp mình cách bắt lổi của cái này với

  2. #2
    Ngày gia nhập
    10 2012
    Bài viết
    12

    Lỗi này là ko phải của C# mà là của SQL bắt lỗi khóa ngoại rồi, bạn thử dùng Quẻy chạy trực tiếp trên SQL xem có lỗi đó ko ? Cũng như theo mình biết khi thiết kế CSDL bây h ít khi dùng khóa ngoại lắm, hoặc nếu dùng phải phân tích và am hiểu các trạng thái.
    Cách xử lý của bạn nên :
    - Kiểm tra trực tiếp Query sinh ra từ C# trên SQL xem có xuất hiện báo lỗi ko ?
    - Việc xóa Sinh viên hay thay đổi trên 1 mã đã sinh trên 1 bảng khác đóng vai trò là Khóa ngoại là ko được? Bạn nên bắt lỗi , nếu mã SV đó đã tồn tài trên 1 bảng khác thì :
    a. Thông báo ko cho xóa hay chỉnh sửa mã sinh viên đó do đã phát sinh trên bảng Biên lai.
    b. Xóa các dòng phiếu thông tin của sinh viên đó đi trên bảng Biên lai học phí, sau đó mới cho đổi trên bảng sinh viên
    c. Việc Đổi mã SV A--> SVB thì phải thực hiện đổi trên bảng đã phát sinh (Biên lai) rồi sau đó đổi trên bảng Sinh viên
    Chúc bạn xử lý được yêu cầu đặt ra.

  3. #3
    Ngày gia nhập
    03 2011
    Bài viết
    151

    Với lỗi bắt khóa ngoại sql thì ta có 3 cách sử lý với thuộc tính của khóa ngoại:
    Ví dụ cụ thể : tôi có 1 table phòng có mã phòng,tên phòng. 1 table nhân viên với mã nv, tên nv,mã phòng :
    Khi tôi xóa 1 phòng ban nào đó ở bảng phòng :
    1. Yêu cầu xóa tất cả dữ liệu có liên quan đến phòng đó tồn tại bên table nhân viên. Ý là xóa mọi nhân viên cả phòng đó trước rồi mới xóa phòng.
    2. Cho phép xóa phòng và tất cả nhân viên của phòng đó đều bị xóa cùng
    3. Cho phép xóa phòng , tất cả nhân viên liên quan đến phòng đó trong trường mã phong có giá trị là null.

  4. #4
    Ngày gia nhập
    11 2011
    Bài viết
    9

    Lỗi ràng buộc khóa là do thiết kế CSDL chứ nhỉ? Muốn xóa đi thì bạn phải xem xét điều kiện có khi 1 bảng phải xóa hết dữ liệu liên quan mới xóa đc bản ghi bảng kia
    Ví dụ phải xóa hết nhân viên của phòng mới xóa đc phòng đó.
    Cách xử lý:
    - Bạn có thể cho nó kiểm tra nếu như còn nhân viên đưa ra thông báo phải xóa hết nhân viên trc (có thể tạo 1 MessageBox, nếu OK thì gọi 1 lệnh sql xóa hết nhân viên phòng ý luôn rồi xóa phòng)
    - Sử dụng try catch để tránh lỗi và đưa thông báo

  5. #5
    Ngày gia nhập
    03 2012
    Bài viết
    3

    trên C# bạn thực hiện câu SQL sau:
    Visual C# Code:
    1. string sql = "select mahv from hocvien_lophoc where maHV='"+txthocvien.text;
    2. "chạy execute rồi xem nó trả về mấy dòng...."
    3. if(table.row.count()>0) MessageBox.Show("hoc vien con ton tai trong 1 lop hoc");
    4. ....
    5. "tương tự như vậy bạn viết 1 sql nữa cho bảng bienlaihocphi xem có không,nếu có in ra"
    6. ...
    7. cuối cùng nếu ko có trường hợp nào dính thì bạn thực hiện lệnh delete...

  6. #6
    Ngày gia nhập
    05 2010
    Bài viết
    25

    Mặc định Bắt lổi khi thực hiện Delete trong c# báo lổi ràng buộc khóa

    Nói chung là bạn muốn xoá dữ liệu bảng cha thì phải xoá dữ liệu các bảng con trước đã.

  7. #7
    Ngày gia nhập
    11 2012
    Nơi ở
    Ở nhà
    Bài viết
    180

    Trích dẫn Nguyên bản được gửi bởi thanhbmt Xem bài viết
    Nói chung là bạn muốn xoá dữ liệu bảng cha thì phải xoá dữ liệu các bảng con trước đã.
    Không phải đâu bạn. Khi bạn thiết lập liên kết dữ liệu thì bạn đặt nó khi xóa ở bảng cha thì bảng con cũng bị xóa, hoặc là set null.

Các đề tài tương tự

  1. Xây dựng bài toán quản lý lịch công tác bằng Cây nhị phân tìm kiếm trong C#!
    Gửi bởi utby93 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 09-12-2013, 06:00 PM
  2. làm sao có thể delete table có id khóa chính đồng thời delete id đó trong table khác
    Gửi bởi thuan trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 3
    Bài viết cuối: 14-10-2011, 10:44 AM
  3. Tách từ ra khỏi chuỗi và đưa vào mảng trong lập trình C?
    Gửi bởi tokyo_square trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 9
    Bài viết cuối: 20-03-2011, 08:25 PM
  4. lổi khi chạy chương trình viết bằng vs 2005 trong vs 2008 ?
    Gửi bởi nguyen my trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 27-02-2011, 08:58 PM
  5. đếm pt chẵn trong n bằng đệ qui
    Gửi bởi zozcothienlaczoz trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 11-10-2010, 11:25 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn