C#中的增删改查

敲三层的时候我只敲了三层的登录界面,结果改七层把登录改完了,换了注册时候犯了难,因为将U层的数据写到数据库时候不会写,虽然思想一样,但是语句不一样啊,写法和查到的博客也都不一样,因为大神们的博客全是用VB.NET写的,哎我这个只是单纯的用到了的菜鸟又得啃食了,所以下了很大的决定,再把三层从头来过,so,至今我还在三层耕耘。话说耕耘了这么长的时间,总得有点自己的收获吧,所以就要总结一番了。


查这个语句算是很简单的了,三层登录视频上也有源码,上上篇博客C#版机房登录中也有介绍,再次不在赘述。


增这个语句可得好好的说说,因为我的痛苦便是从这而来,所以才有了这篇费劲啃来的博客,小伙伴们可是有福享喽。
首先看思路U层输入数据,点击存储后,开始执行B层代码,B层我使用的是实体,所以在B层将数据全部赋值给实体(到D层就简单了,在D层只是调用实体就可以了),D层首先进行卡号的查询,如果卡号被在数据库中查询到则进行提示卡号已经存在,如果卡号未在数据库中查询到则进行注册,将数据写入数据库后进行提示注册成功。

U层

private void btnOk_Click(object sender, EventArgs e)
        {
            //卡号不能为空
            if (txtCardNo.Text.Trim() == "")
            {
                MessageBox.Show("卡号不能为空");
                return;
            }
            //学号不能为空
            if (txtStudentNo.Text.Trim()=="")
            {
                MessageBox.Show("学号不能为空");
                return;
            }
            //、、、重复不能为空的Text语句进行提示
            //卡号不为空
            Entity.cardInfo cardInfo = new Entity.cardInfo();
            BLL.RegistServer CardNo = new BLL.RegistServer();
            //文本框内容传给实体
            cardInfo.cardNO = txtCardNo.Text.Trim();
            cardInfo.studentNO = txtStudentNo.Text.Trim();
            cardInfo.staute = cmbStatus.Text;
            cardInfo.lastMoney = Convert.ToDecimal(txtRechargeNum.Text);
            cardInfo.type = cmbType.Text;
            cardInfo.isCheck = cmbIsCheck.Text;
            cardInfo.user = txtUserID.Text;
            cardInfo = CardNo.CheckCardNo(cardInfo);
            if (cardInfo != null)
            {
                MessageBox.Show("恭喜,注册成功!");

            }
            if (cardInfo == null)
            {
                MessageBox.Show("对不起,该账号已存在!");
            }            
        }

B层

 #region 查询卡的方法
        public Entity.cardInfo CheckCardNo(Entity.cardInfo CardNo)
        {
            DAL.CardDAO CardDAO = new DAL.CardDAO();
            Entity.cardInfo cardInfo = new Entity.cardInfo();
            //U层数据赋给传值的实体
            cardInfo.cardNO = CardNo.cardNO;
            cardInfo.studentNO = CardNo.studentNO;
            cardInfo.staute = CardNo.staute;
            cardInfo.lastMoney = CardNo.lastMoney;
            cardInfo.type = CardNo.type;
            cardInfo.isCheck = CardNo.isCheck;
            cardInfo.user = CardNo.user;
            cardInfo = CardDAO.SelectCardNO(CardNo);//调用D层注册查询卡的方法
            return cardInfo;
        }
        #endregion

D层

 #region // 注册查询卡信息
        public Entity.cardInfo SelectCardNO(Entity.cardInfo cardInfo)
        {
            using (SqlConnection conn = new SqlConnection(CtDB.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "select * from card where cardNO=@cardNO";//查询卡语句
                cmd.CommandType = CommandType.Text;
                cmd.Parameters.Add(new SqlParameter("@cardNO", cardInfo.cardNO));                
                Entity.cardInfo cards = new Entity.cardInfo();
                conn.Open();//打开数据连接
                SqlDataReader reader = cmd.ExecuteReader();
                reader.Read();//进行数据库查询
                try
                {                    
                    AddCard(cardInfo);//调用写入数据库的方法
                }
                catch
                {
                    cards = null;
                    return cards;
                }
                return cards;
            }
        }
        #endregion

 #region  //写入数据库的方法
        private Entity.cardInfo AddCard(Entity.cardInfo cardInfo)
        {
            using (SqlConnection conn = new SqlConnection(CtDB.ConnString))
            {
                SqlCommand cmd = conn.CreateCommand();
                //写入的语句
                cmd.CommandText = "insert into card values(@cardNO,@studentNO,@statue,@lastMoney,@type,@isCheck,@userID)";
                cmd.CommandType = CommandType.Text;
                //写入的内容
                cmd.Parameters.Add(new SqlParameter("@cardNO", cardInfo.cardNO));
                cmd.Parameters.Add(new SqlParameter("@studentNO", cardInfo.studentNO));
                cmd.Parameters.Add(new SqlParameter("@statue", cardInfo.staute));
                cmd.Parameters.Add(new SqlParameter("@lastMoney", cardInfo.lastMoney));
                cmd.Parameters.Add(new SqlParameter("@type", cardInfo.type));
                cmd.Parameters.Add(new SqlParameter("@isCheck", cardInfo.isCheck));
                cmd.Parameters.Add(new SqlParameter("@userID", cardInfo.user));
                conn.Open();//打开数据连接
                cmd.ExecuteNonQuery();//执行写入语句
                return cardInfo;
            }
        }
        #endregion

至此,我探索的完整的插入数据就结束了,下面看看删除吧。


说起删呢,想到了,最近情人节,就算情人节也别将就自己,不喜欢了就删了他,哈哈。。。
删呢和上述的是很相似的,所以代码也就不贴了,只把简单的语句写出来供学习。

string MyDelete="Delete from card where cardID="+TextBox1.Text;
SqlCommand MyCommand=new SqlCommand(MyDelete,MyConnection);
//异常处理
try
{
MyConnection.Open();
MyCommand.ExecuteNonQuery();
MyConnection.Close();
txtCardID.Text="";
}
catch(Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}

改和删和增还是类似的,所以下面的话你懂得。。。

string MyUpdate="Update card set studentNO='"+studentNO+"',type='"+type+"' where cardIDID="+txtCardID.Text;
SqlCommand MyCommand=new SqlCommand(MyUpdate,MyConnection);
try
{
MyConnection.Open();
MyCommand.ExecuteNonQuery();
MyConnection.Close();
txtCardID.Text="";
}
catch(Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}

写了这么多,最想说的一句话就是:不懂一定得硬着脸皮去问去查去探索啊。培养死不要脸的革命精神,哈哈,都懂得!!!

你可能感兴趣的:(【机房收费系统学习】)