一个系列增删改的三层的操作

UI层



        private void btnAddRack_Click(object sender, EventArgs e)
        {
            FrmBookrackInfo frmBookrackInfo = new FrmBookrackInfo();
            frmBookrackInfo.BookrackInfoEventHandler += new Action<Model.BookrackInfo>(frmBookrackInfo_BookrackEventHandler);
            if (frmBookrackInfo.ShowDialog()==DialogResult.OK)
            {
                dgvBookreckInfo.DataSource = bllBookrackInfo.GetReckInfo();
            }
            frmBookrackInfo.Dispose();
        }


        private void frmBookrackInfo_BookrackEventHandler(Model.BookrackInfo obj)
        {
            bllBookrackInfo.InsertData(obj);
        }


        private void btnChangeRack_Click(object sender, EventArgs e)
        {
            Model.BookrackInfo bookrackInfoOld = dgvBookreckInfo.SelectedRows[0].DataBoundItem as Model.BookrackInfo;
            if (bookrackInfoOld==null)
            {
                MessageBox.Show("请选中一行");
                return;
            }
            //显示修改界面
            FrmBookrackInfo frmBookrackInfo = new FrmBookrackInfo(bookrackInfoOld);
            //绑定事件
              frmBookrackInfo.BookrackInfoEventHandler += new Action<Model.BookrackInfo>(frmBookrackInfo_BookRackInfoEventHandler);
            if (frmBookrackInfo.ShowDialog()==DialogResult.OK)
            {
          
                dgvBookreckInfo.DataSource = bllBookrackInfo.GetReckInfo();
            }
            
        }


         void frmBookrackInfo_BookRackInfoEventHandler(Model.BookrackInfo obj)
        {
                  bllBookrackInfo.Update(obj);
        }


        private void btnDeleterack_Click(object sender, EventArgs e)
        {
            if (dgvBookreckInfo.SelectedRows.Count==0)
            {
                MessageBox.Show("请选中要删除的行"); return;
            }
            List<int> listId = new List<int>();
            for (int i = 0; i < dgvBookreckInfo.SelectedRows.Count; i++)
            {
                Model.BookrackInfo brk = dgvBookreckInfo.SelectedRows[i].DataBoundItem as Model.BookrackInfo;
                if (brk == null) continue;
                listId.Add(brk.ID);
            }
            if (bllBookrackInfo.DeleteByIDs(listId))
            {
                MessageBox.Show("删除成功");
                dgvBookreckInfo.DataSource = bllBookrackInfo.GetReckInfo();
            }
            else
            {
                MessageBox.Show("删除失败...");
            }          
        }

comm类

public   class Commom
    {
      public static bool CheckIsNullOrEmpty(params string[] args)
      {
          bool isNullOrEmpty = false;
          for (int i = 0; i < args.Length; i++)
          {
              if (string.IsNullOrEmpty(args[i]))
              {
                  isNullOrEmpty = true;
                  break;
              }
              
          }
          return isNullOrEmpty;
      }


操作页面

 public partial class FrmBookrackInfo : Form
    {
        public FrmBookrackInfo()
        {
            InitializeComponent();
            this.btnAccept.Text = "添加";
            cboBookRegionId.SelectedIndex = -1;
        }
        public event Action<Model.BookrackInfo> BookrackInfoEventHandler;
        BLL.BookrackInfo bllBookrackInf = new BLL.BookrackInfo();
        BLL.BookRegionInfo bllBookRegionInfo = new BLL.BookRegionInfo();
        Model.BookrackInfo bookrackInfoOld;
        public FrmBookrackInfo(Model.BookrackInfo bookrackInfo)
            : this()
        {
            this.bookrackInfoOld = bookrackInfo;
            this.btnAccept.Text = "修改";
        }
        private void btnAccept_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < this.Controls.Count; i++)
            {
                if (this.Controls[i] is TextBox)
                {
                    if (Commom.CheckIsNullOrEmpty(this.Controls[i].Text))
                    {
                        MessageBox.Show("请输入完整信息");
                        return;
                    }
                }
            }
            Model.BookrackInfo bookrackInfo = new Model.BookrackInfo();
             bookrackInfo.BookrackId = Convert.ToInt32(txtBookrackId.Text.Trim());
                bookrackInfo.BookrackNum = Convert.ToInt32(txtBookrackNum.Text.Trim());
            bookrackInfo.Remark = txtRemark.Text.Trim();
            bookrackInfo.BookRegionId = (cboBookRegionId.SelectedItem as
                Model.BookRegionInfo) == null ? 0 : (cboBookRegionId.SelectedItem as Model.BookRegionInfo).ID;
            if (bookrackInfoOld == null)
            {


                //新增
                AddBookrackInfo(bookrackInfo);
            }
            else
            {
                //修改
                if (!bookrackInfo.Equals(bookrackInfoOld))
                {
                    bookrackInfo.ID = bookrackInfoOld.ID;
                    
                    //不同进行修改
                    ChangeBookrackInfo(bookrackInfo);
                  ;
                }
            }
            this.DialogResult = DialogResult.OK;
        }


        private void ChangeBookrackInfo(Model.BookrackInfo bookrackInfo)
        {
            if (bookrackInfo.Equals(bookrackInfoOld))
            {
                MessageBox.Show("相同不用修改");
                return;
            }
            else if (BookrackInfoEventHandler != null)
            {
                BookrackInfoEventHandler(bookrackInfo);
                 MessageBox.Show("修改成功");
            }
            else
            {
                MessageBox.Show("修改失败");
            }
     
        }
        //比较用户修改的对象与从数据库中取出的对象的关系,如果有相同的字段就将其设置为null或-1,那么后台的执行逻辑就不为这个字段生成SQL语句的字段
        private void ChangbookrackInfoToChange(Model.BookrackInfo bookrackInfo, Model.BookrackInfo bookrackInfoOld)
        {
            //凡是相同的就为null,只保留需要修改的字段
            if (bookrackInfo.ID == bookrackInfoOld.ID)
            {
                bookrackInfo.ID = -1;
            }
            if (bookrackInfo.BookrackId == bookrackInfoOld.BookrackId)
            {
                bookrackInfo.BookrackId = -1;
            }
            if (bookrackInfo.BookRegionId == bookrackInfoOld.BookRegionId)
            {
                bookrackInfo.BookRegionId = -1;
            }
            if (bookrackInfo.BookrackNum == bookrackInfoOld.BookrackNum)
            {
                bookrackInfo.BookrackNum = -1;
            }
            if (bookrackInfo.Remark == bookrackInfoOld.Remark)
            {
                bookrackInfo.Remark = null;
            }


        }


        private void AddBookrackInfo(Model.BookrackInfo bookrackInfo)
        {
            if (BookrackInfoEventHandler != null)
            {
                BookrackInfoEventHandler(bookrackInfo);
                MessageBox.Show("添加成功");
            }
            else
            {
                MessageBox.Show("添加失败");
            }
        }

        private void FrmBookrackInfo_Load(object sender, EventArgs e)
        {
            if (bookrackInfoOld == null)
            {
                LoadDataComboBoxAdd();
            }
            else
            {
                LoadDataComboBoxChange();
            }
        }


        private void LoadDataComboBoxAdd()
        {
            List<Model.BookRegionInfo> list = bllBookRegionInfo.GetRegionInfo();
            //cboBookRegionId.DataSource = list;
            //cboBookRegionId.DisplayMember = "RegionName";


            //cboBookRegionId.SelectedIndex = 0;
            cboBookRegionId.Items.Add("请选择");
            cboBookRegionId.DisplayMember = "RegionName";
            for (int i = 0; i < list.Count; i++)
            {
                cboBookRegionId.Items.Add(list[i]);
            }
            cboBookRegionId.SelectedIndex = 0;
        }


        private void LoadDataComboBoxChange()
        {
            LoadDataComboBoxAdd();
            for (int i = 0; i < cboBookRegionId.Items.Count; i++)
            {
                Model.BookRegionInfo bookRegionInfo = cboBookRegionId.Items[i] as Model.BookRegionInfo;
                if (bookRegionInfo == null) continue;
                if (bookRegionInfo.ID == bookrackInfoOld.BookRegionId)
                {
                    cboBookRegionId.SelectedIndex = i;
                    break;
                }
            }
            txtBookrackId.Text = bookrackInfoOld.BookrackId.ToString();
            txtBookrackNum.Text = bookrackInfoOld.BookrackNum.ToString();
            txtRemark.Text = bookrackInfoOld.Remark;
        }


        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.No;
        }


        private void txtBookrackNum_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar < '1' || e.KeyChar > '9')
            {
                e.Handled = true;
                return;
            }
           
        }
    }
}

BLL层

namespace BookManage.BLL
{
   public  class BookrackInfo
    {
       DAL.BookRackInfo dalbookRack = new DAL.BookRackInfo();
        public List<Model.BookrackInfo> GetReckInfo()
        {
            return dalbookRack.GetReckInfo();
        }


        public bool DeleteByIDs(List<int> listId)
        {
            return dalbookRack.DeleteByIDs(listId)>0;
        }


        public void InsertData(Model.BookrackInfo obj)
        {
            dalbookRack.InsertData(obj);
        }
        public void Update(Model.BookrackInfo obj)
        {
            dalbookRack.Update(obj);
        }
    }
}

DAL层

 public  class BookRackInfo
    {
       Model.BookrackInfo bookrack = new Model.BookrackInfo();
        public List<Model.BookrackInfo> GetReckInfo()
        {
            List<Model.BookrackInfo> list = new List<Model.BookrackInfo>();
            string sql = "select ID,BookrackId,BookRegionId,BookrackNum,Remark from BookrackInfo";
            using (SqlDataReader reader=DALSqlHelper.SqlHelper.ExecuteReader(sql,CommandType.Text))
            {
              // list.Add(Comm.GetInfoFromReader<Model.BookrackInfo>(reader));
                while (reader.Read())
                {
                    list.Add(Comm.GetBookrackInfoReader(reader));
                }
            }
            return list;
        }


        public int DeleteByIDs(List<int> listId)
        {
            string sql =string.Format( "delete  from BookRackInfo where ID in({0}) ",string.Join(",",listId));
           
            return SqlHelper.ExecuteNonQuery(sql,CommandType.Text);
        }


        public void InsertData(Model.BookrackInfo obj)
        {
            List<Model.BookrackInfo> list = new List<Model.BookrackInfo>();
            string sql = "insert into BookrackInfo (BookrackId,BookRegionId,BookrackNum,Remark)values(@BookrackId,@BookRegionId,@BookrackNum,@Remark)";
            SqlParameter[] ps = { 
                                new SqlParameter("@BookrackId",obj.BookrackId),
                                new SqlParameter("@BookRegionId",obj.BookRegionId),
                                new SqlParameter("@BookrackNum",obj.BookrackNum),
                                new SqlParameter("@Remark",obj.Remark)
                                };
             SqlHelper.ExecuteNonQuery(sql,CommandType.Text,ps);
        }


        public void Update(Model.BookrackInfo obj)
        {
         
            //List<Model.BookrackInfo> list = new List<Model.BookrackInfo>();
            string sql = "update BookrackInfo set BookrackId=@BookrackId,BookrackNum=@BookrackNum,BookRegionId=@BookRegionId,Remark=@Remark where ID=@ID";
            SqlParameter[] ps = {
                                new SqlParameter("@BookrackId",obj.BookrackId),
                                new SqlParameter("@BookrackNum",obj.BookrackNum),
                                new SqlParameter("@BookRegionId",obj.BookRegionId),
                                new SqlParameter("@Remark",obj.Remark),
                                new SqlParameter("@ID",obj.ID)
                                };
            //List<string> paraName = new List<string>();
            //List<SqlParameter> para = new List<SqlParameter>();
            //if (obj.BookrackId!=0)
            //{
            //    paraName.Add("BookrackId=@BookrackId");
            //    para.Add(new SqlParameter("@BookrackId",obj.BookrackId));
            //}
            //if (obj.BookrackNum!=0)
            //{
            //    paraName.Add("BookrackNum=@BookrackNum");
            //    para.Add(new SqlParameter("@BookrackNum",obj.BookrackNum));
            //}
            //if (obj.BookRegionId!=0)
            //{
            //    paraName.Add("BookRegionId=@BookRegionId");
            //    para.Add(new SqlParameter("@BookRegionId",obj.BookRegionId));
            //}
            //if (obj.Remark!=null)
            //{
            //    paraName.Add("Remark=@Remark");
            //    para.Add(new SqlParameter("@Remark",obj.Remark));
            //}
            //if (obj.ID != 0)
            //{
            //    paraName.Add("ID=@ID");
            //    para.Add(new SqlParameter("@ID", obj.ID));
            //}
            SqlHelper.ExecuteNonQuery(sql,CommandType.Text,ps);
          
            //string sql = "update BookrackInfo set "+string.Join(",",paraName);
           //SqlHelper.ExecuteNonQuery(sql,CommandType.Text,para.ToArray());
        }


        public int GetRackCountByUsing(List<int> regionIdlist)
        {
            string sql = "select count(*) from BookrackInfo where BookRegionId in( "+string.Join(",",regionIdlist)+")";
            return (int)SqlHelper.ExecuteScalar(sql,CommandType.Text);
        }


        public void DeleteByrackIDs(List<int> regionIdlist)
        {
            string sql = string.Format("delete from BookrackInfo where BookrackId in({0})",string.Join(",",regionIdlist));
            SqlHelper.ExecuteNonQuery(sql,CommandType.Text);
        }
    }
}

commcon层

public class Comm
    {
        public static T GetInfoFromReader<T>(SqlDataReader reader)
        { 
        Type t=typeof(T);
        object o = Activator.CreateInstance(t);
        for (int i = 0; i < reader.FieldCount; i++)
        {
            string name = reader.GetName(i);
            PropertyInfo p = t.GetProperty(name,BindingFlags.IgnoreCase|BindingFlags.Instance|BindingFlags.Public);
            p.SetValue(o,reader[i],null);
        }
        return (T)o;
        }


        public  static Model.BookRegionInfo GetBookRegionInfoReader(SqlDataReader reader)
        {
            Model.BookRegionInfo bookRegion = new Model.BookRegionInfo();


            bookRegion.ID = Convert.ToInt32(reader["ID"]);
            bookRegion.RegionName = reader["RegionName"].ToString();
            bookRegion.Remark = reader["Remark"].ToString();
            return bookRegion;
        }


        public static Model.BookrackInfo GetBookrackInfoReader(SqlDataReader reader)
        {
            Model.BookrackInfo bookrackInfo = new Model.BookrackInfo();
            bookrackInfo.ID = Convert.ToInt32(reader["ID"]);
            bookrackInfo.BookrackId = Convert.ToInt32(reader["BookrackId"]);
            bookrackInfo.BookRegionId = Convert.ToInt32(reader["BookRegionId"]);
            bookrackInfo.BookrackNum = Convert.ToInt32(reader["BookrackNum"]);
            bookrackInfo.Remark =  reader.IsDBNull(4) ? null:reader["Remark"].ToString();
           
            return bookrackInfo;
        }
    }
}

Model层

   public class BookrackInfo
    {
        public int ID { get; set; }
        public int BookrackId { get; set; }
        public int BookRegionId { get; set; }
        public int BookrackNum { get; set; }
        public string Remark { get; set; }
        public override bool Equals(object obj)
        {
            Model.BookrackInfo bookrackInfo = obj as Model.BookrackInfo;
            return this.BookrackId == bookrackInfo.BookrackId &&
                this.BookRegionId == bookrackInfo.BookRegionId &&
                this.BookrackNum == bookrackInfo.BookrackNum &&
               this.Remark == bookrackInfo.Remark &&
                this.ID == bookrackInfo.ID;
 
        }
        public override string ToString()
        {
            return BookRegionId.ToString();
        }
    }

namespace LibraryManager { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { Tool.InitCategoryData(cbCategoy); } #region 数据初始化 private void tsbCategory_Click(object sender, EventArgs e) { CategoryForm cf = new CategoryForm(); cf.ShowDialog(); } private void ShowData(int categoryID) { ///创建LibraryManagerDB数据库的数据上下文 LibraryManagerDBDataContext db = new LibraryManagerDBDataContext(LibraryManager.Properties.Settings.Default.LibraryManagerDBConnectionString); ///查询数据 var result = from b in db.Book join bc in db.BookCategory on b.ID equals bc.BookID where bc.CategoryID == categoryID orderby b.PublishDate descending select b; ///设置dgvBook控件的数据源 dgvBook.DataSource = result; dgvBook.AutoGenerateColumns = false; ///排列列显示的顺序 int index = 0; dgvBook.Columns["cName"].DisplayIndex = index++; dgvBook.Columns["cISBN"].DisplayIndex = index++; dgvBook.Columns["cAuthor"].DisplayIndex = index++; dgvBook.Columns["cPublish"].DisplayIndex = index++; dgvBook.Columns["cPublishDate"].DisplayIndex = index++; dgvBook.Columns["cStore"].DisplayIndex = index++; dgvBook.Columns["cBorrowNumber"].DisplayIndex = index++; dgvBook.Columns["cUpdate"].DisplayIndex = index++; dgvBook.Columns["cDelete"].DisplayIndex = index++; ///设置列的可见性 for (int i = 0; i < dgvBook.Columns.Count; i++) { DataGridViewColumn c = dgvBook.Columns[i]; if (c.DisplayIndex > index - 1) c.Visible = false; c.SortMode = DataGridViewColumnSortMode.NotSortable; } dgvBook.Columns["cUpdate"].Width = 40; dgvBook.Columns["cDelete"].Width = 40; ///设置行显示的值 foreach (DataGridViewRow row in dgvBook.Rows) { row.HeaderCell.Value = (row.Index + 1).ToString(); if (Int32.Parse(row.Cells["cBorrowNumber"].Value.ToString()) > 0) { row.Cells["cDelete"].Value = string.Empty; } else { row.Cells["cDelete"].Value = "删除"; } } ///设置按钮的可用性 if (dgvBook.CurrentRow != null) { Book book = result.ToList<Book>()[dgvBook.CurrentRow.Index]; btnLend.Enabled = (book.Status.Value == 2 || book.Store <= 0) ? false : true; } } private void dgvBook_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void dgvBook_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { ///设置借阅书籍按钮的可用性 if (e.RowIndex < 0 || e.RowIndex > dgvBook.Rows.Count - 1) return; Book book = ((IQueryable<Book>)dgvBook.DataSource).ToList<Book>()[e.RowIndex]; btnLend.Enabled = (book.Status.Value == 2 || book.Store <= 0) ? false : true; } #endregion #region 按钮事件设计 private void pbCategory_Click(object sender, EventArgs e) { ///打开分类管理的对话框 CategoryForm cf = new CategoryForm(); cf.ShowDialog(); } private void cbCategoy_SelectedIndexChanged_1(object sender, EventArgs e) { ///显示书籍的数据 try { ShowData(((Category)cbCategoy.SelectedItem).ID); } catch (Exception ex) { Console.WriteLine(ex); } } private void btnLend_Click(object sender, EventArgs e) { ///打开借阅书籍的对话框 LendForm lf = new LendForm(); IQueryable<Book> books = ((IQueryable<Book>)dgvBook.DataSource); lf.BookID = books.ToList<Book>()[dgvBook.CurrentRow.Index].ID; if (lf.ShowDialog() == DialogResult.OK) { ShowData(((Category)cbCategoy.SelectedItem).ID); } } private void btnAdd_Click_1(object sender, EventArgs e) { ///打开添加书籍的对话框 BookForm bf = new BookForm(); if (bf.ShowDialog() == DialogResult.OK) { ShowData(((Category)cbCategoy.SelectedItem).ID); } } private void MainForm_FormClosed(object sender, FormClosedEventArgs e) { ///退出应用程序 Application.Exit(); } #endregion private void pLeft_Paint_1(object sender, PaintEventArgs e) { ControlPaint.DrawBorder3D(e.Graphics, e.ClipRectangle, Border3DStyle.Etched, Border3DSide.Right); } private void pBottom_Paint_1(object sender, PaintEventArgs e) { ControlPaint.DrawBorder3D(e.Graphics, e.ClipRectangle, Border3DStyle.Etched, Border3DSide.Top); } private void label1_Click(object sender, EventArgs e) { } private void pbCategory_Click_1(object sender, EventArgs e) { ///打开分类管理的对话框 CategoryForm cf = new CategoryForm(); cf.ShowDialog(); } private void dgvBook_CellContentClick_1(object sender, DataGridViewCellEventArgs e) { ///判断列索引是否合法 if (e.ColumnIndex < 0 || e.ColumnIndex > dgvBook.Columns.Count - 1) return; if (dgvBook.Columns[e.ColumnIndex].Name == "cBorrowNumber") { ///打开查看借阅书籍用户的对话框 LendUserInfoForm luif = new LendUserInfoForm(); IQueryable<Book> books = ((IQueryable<Book>)dgvBook.DataSource); luif.BookID = books.ToList<Book>()[e.RowIndex].ID; luif.ShowDialog(); } if (dgvBook.Columns[e.ColumnIndex].Name == "cUpdate") { ///打开修书籍的对话框 BookForm bf = new BookForm(); IQueryable<Book> books = ((IQueryable<Book>)dgvBook.DataSource); bf.BookID = books.ToList<Book>()[e.RowIndex].ID; if (bf.ShowDialog() == DialogResult.OK) { ///更新数据 ShowData(((Category)cbCategoy.SelectedItem).ID); } } if (dgvBook.Columns[e.ColumnIndex].Name == "cDelete") { if (MessageBox.Show("确定要删除该书籍吗?", "删除书籍询问对话框", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { ///创建LibraryManagerDB数据库的数据上下文 LibraryManagerDBDataContext db = new LibraryManagerDBDataContext(LibraryManager.Properties.Settings.Default.LibraryManagerDBConnectionString); ///查询被删除的书籍 IQueryable<Book> books = ((IQueryable<Book>)dgvBook.DataSource); var deleteBooks = db.Book.Where(b => b.ID == books.ToList<Book>()[e.RowIndex].ID); ///删除数据,并提交到数据库中 db.Book.DeleteAllOnSubmit(deleteBooks); db.SubmitChanges(); MessageBox.Show("恭喜您,删除书籍成功!"); } } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值