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

Đề tài: Cách Insert và Update trên cùng một form trong Winform C#?

  1. #1
    Ngày gia nhập
    05 2010
    Nơi ở
    Tp Hcm
    Bài viết
    49

    Mặc định Cách Insert và Update trên cùng một form trong Winform C#?

    Vào thẳng vấn đề luôn nhe các bro.Mình làm mô hình 3 lớp đang bị bí chỗ: khi insert và update nó chưa phận biệt được. mình insert update trên cùng 1 form khi click vào row của gridview.
    class DataAccessHelper
    Code:
      public int ExcuteNonQuery(string sql)
            {
                SqlConnection conn = GetConnection();
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
    
                return cmd.ExecuteNonQuery();
            }
            public SqlDataReader ExecuteReader(string sql)
            {
                SqlConnection conn = GetConnection();
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataReader reader = cmd.ExecuteReader();
                return reader;
            }
            public DataTable GetDataTable(string sql)
            {
                SqlConnection conn = GetConnection();
                conn.Open();
                SqlDataAdapter adap = new SqlDataAdapter(sql, conn);
                DataTable dt = new DataTable();
                adap.Fill(dt);
                return dt;
            }
            public object GetValue(string sql)
            {
                SqlConnection conn = GetConnection();
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                return cmd.ExecuteScalar();
            }
    frmUpdateUser
    Code:
      private void btnLuu_Click(object sender, EventArgs e)
            {
                string taikhoan = txtTaiKhoan.Text;
                string matkhau = txtMatKhau.Text;
                string hoten = txtHoTen.Text;
                string email = txtEmail.Text;
                string phone = txtPhone.Text;
                string quyenhan = txtRole.Text;
    
                if (_u == "")
                {
                    nd = new NguoiDung(taikhoan, matkhau, hoten, email, phone, quyenhan);
                    int kq = bll.Insert(nd);
                    if (kq > 0)
                    {
                        MessageBox.Show("Thêm mới thành công!");
                        this.Close();
                    }
                }
                else
                {
                    nd = new NguoiDung(matkhau, hoten, email, phone, quyenhan);
                    int kq = bll.Update(nd);
                    if (kq > 0)
                    {
                        MessageBox.Show("Cập nhật mới thành công!");
                        this.Close();
                    }
                }
            }
    class NguoiDungDAL
    Code:
      public int Insert(NguoiDung nd)
            {
                string sql = "insert into tblNguoiDung values (N'" + nd.TaiKhoan + "',N'" + nd.MatKhau + "',N'" + nd.HoTen + "',N'" + nd.Email + "',N'" + nd.SoDienThoai + "',N'" + nd.QuyenHan + "')";
                int kq = db.ExcuteNonQuery(sql);
                if (kq > 0)
                {
                    return 1;
                }
                return 0;
            }
     public int Update(NguoiDung nd)
            {
                string sql = "update tblNguoiDung set MatKhau =N'" + nd.MatKhau + "',N'" + nd.HoTen + "',N'" + nd.Email + "',N'" + nd.SoDienThoai + "',N'" + nd.QuyenHan + "' where TaiKhoan='"+nd.TaiKhoan+"'";
                int kq = db.ExcuteNonQuery(sql);
                if (kq > 0)
                {
                    return 1;
                }
                else return 0;
            }
    Update:
    vừa check xong,mình làm sai mấy chỗ:
    Code:
      else
                {
                    nd = new NguoiDung(taikhoan,matkhau, hoten, email, phone, quyenhan);
                    if (CheckValidation())
                    {
                        bll.Update(nd);
                        MessageBox.Show("Cập nhật thành công!");
                        this.Close();
                    }
                }
    Code:
      public int Update(NguoiDung nd)
            {
    
                string sql = "update tblNguoiDung set MatKhau =N'" + nd.MatKhau + "',HoTen=N'" + nd.HoTen + "',Email=N'" + nd.Email + "',SoDienThoai=N'" + nd.SoDienThoai + "',QuyenHan=N'" + nd.QuyenHan + "' where TaiKhoan='" + nd.TaiKhoan + "'";
                int kq = db.ExcuteNonQuery(sql);
                if (kq > 0)
                {
                    return 1;
                }
                return 0;
            }
    chỉ cần sửa lại 2 chỗ này thôi .mà sao cái GridView Quản Lý Người Dùng của mình nó load dữ liệu ngược ấy nhỉ,đáng lẽ phải load theo column của SQL chứ.
    hình em nó đây ạ,đáng lẽ nó phải load TaiKhoan,HoTen,Email,SoDienThoai theo các field trong SQL chứ.em mò mãi ko ra,bro nào down về xem giúp em với
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi huynhthoaianh : 15-01-2013 lúc 11:58 AM.

  2. #2
    Ngày gia nhập
    01 2012
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    68

    Biến _u của bạn chưa nhận được giá trị từ frmQuanTriNguoiDung nên vậy đấy. Trong sư kiện btnSua_Click bạn sửa đoạn
    Visual C# Code:
    1. frmUpdateUser frm = new frmUpdateUser((string)grvNguoiDung.SelectedRows[0].Cells["TaiKhoan"].Value);
    thành
    Visual C# Code:
    1. frmUpdateUser frm = new frmUpdateUser((string)grvNguoiDung.Rows[0].Cells["TaiKhoan"].Value);
    xem sao.
    Mình thấy bạn nên sử dụng sự kiện RowEnter cho datagridview để lấy về row index mỗi khi chọn một row nào đó. Ở đoạn mã trên bạn sử dụng mã cứng nên sẽ không thể lấy được giá trị của các row khác ngoài row có index là 0.

  3. #3
    Ngày gia nhập
    05 2010
    Nơi ở
    Tp Hcm
    Bài viết
    49

    vừa check xong,mình làm sai mấy chỗ:
    Code:
      else
                {
                    nd = new NguoiDung(taikhoan,matkhau, hoten, email, phone, quyenhan);
                    if (CheckValidation())
                    {
                        bll.Update(nd);
                        MessageBox.Show("Cập nhật thành công!");
                        this.Close();
                    }
                }
    Code:
      public int Update(NguoiDung nd)
            {
    
                string sql = "update tblNguoiDung set MatKhau =N'" + nd.MatKhau + "',HoTen=N'" + nd.HoTen + "',Email=N'" + nd.Email + "',SoDienThoai=N'" + nd.SoDienThoai + "',QuyenHan=N'" + nd.QuyenHan + "' where TaiKhoan='" + nd.TaiKhoan + "'";
                int kq = db.ExcuteNonQuery(sql);
                if (kq > 0)
                {
                    return 1;
                }
                return 0;
            }
    chỉ cần sửa lại 2 chỗ này thôi

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

  1. stored insert vào 2 bảng cùng 1 winform
    Gửi bởi ngyedv trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 11-04-2012, 04:55 PM
  2. cách gọi form trong WinForm như trên web?
    Gửi bởi hoanghai89 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 12-05-2011, 09:42 PM
  3. Xử lý biến trên form update trong lập trình ASP.NET
    Gửi bởi csharp711 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 22-02-2011, 10:02 AM
  4. Cách Insert , Update , Delelte trên nhiều table quan hệ với nhau
    Gửi bởi nguoimaulanh611 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 21
    Bài viết cuối: 18-12-2009, 02:13 PM
  5. Lập trình âm thanh trên C# | Chạy cùng lúc 2 sound player trên cùng 1 form???
    Gửi bởi KingOfBlade trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 11-05-2009, 10:19 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