前台界面:

后台代码:

namespace ado.net小项目cuid
{
    public partial class Form1 : Form
    {
        //连接字符串
        string str = @"Data Source=.\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True";
        public Form1()
        {
            InitializeComponent();
        }

private void Form1_Load(object sender, EventArgs e)
        {
            //加载餐桌
            LoadDeskInfoByDelFlag(0);
        }
        /// <summary>
        /// 该方法是加载所有没被删除的数据
        /// </summary>
        /// <param name="i"></param>

private void LoadDeskInfoByDelFlag(int i)
        {
            List<DeskInfo> list=new List<DeskInfo>();
            //通过连接字符串连接数据库
            using (SqlConnection con=new SqlConnection(str))
            {
                //拼接sql语句
                string sql = "select DeskId,DeskName,DeskNamePinYin,DeskNum from DeskInfo where DeskDelFlag="+i;
                //准备执行sql语句的对象
                using (SqlCommand cmd=new SqlCommand(sql,con))
                {
                    con.Open();//打开数据库
                    //准备读取数据     reader.Dispose();可释放
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        //判断是否有数据
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                //读取每一行
                                DeskInfo dk=new DeskInfo();
                                dk.DeskId = Convert.ToInt32(reader["DeskId"]);//有两个重载,可以用索引reader[0]和名称,名称准确些
                                dk.DeskName = reader["DeskName"].ToString();//返回的是object类型,需要转换
                                dk.DeskNamePinYin = reader["DeskNamePinYin"].ToString();
                                dk.DeskNum = reader["DeskNum"].ToString();
                                list.Add(dk);
                            }
                        }
                    }
                }
            }
            dgv.AutoGenerateColumns = false;
            dgv.DataSource = list;

if (dgv.Rows.Count>0)
            {
                dgv.SelectedRows[0].Selected = false;
            }

}

//添加数据
        private void btnAdd_Click(object sender, EventArgs e)
        {
            int n = -1;
            //获取文本框的值

//连接数据库
            using (SqlConnection con=new SqlConnection(str))
            {
                string sql =
                    string.Format(
                        "insert into DeskInfo(DeskName, DeskNamePinYin, DeskDelFlag, DeskNum) values('{0}','{1}',{2},'{3}')",
                        txtName.Text, txtPinYin.Text, 0, txtNum.Text);

using (SqlCommand cmd=new SqlCommand(sql,con))
                {
                    con.Open();
                    n= cmd.ExecuteNonQuery();
                }
            }

//判断是否成功
          string msg=  n > 0 ? "操作成功" : "操作失败";
            MessageBox.Show(msg);
            //刷新
            LoadDeskInfoByDelFlag(0);
        }

//删除数据
        private void btnDelete_Click(object sender, EventArgs e)
        {
            //判断下是否选中行
            if (dgv.SelectedRows.Count>0)
            {
                int r = -1;
                //选中了,拿到该行数据的id
                string strId = dgv.SelectedRows[0].Cells[0].Value.ToString();
                int id = Convert.ToInt32(strId);//转换一下
                //update DeskInfo set DeskDelFlag=1 where DeskId=
                using (SqlConnection con=new SqlConnection(str))
                {
                    string sql = "update DeskInfo set DeskDelFlag=1 where DeskId="+id;
                    using (SqlCommand cmd=new SqlCommand(sql,con))
                    {
                        con.Open();
                        r= cmd.ExecuteNonQuery();
                    }
                }
               string msg= r > 0 ? "操作成功" : "操作失败";
                MessageBox.Show(msg);
                LoadDeskInfoByDelFlag(0);

}
        }

//dgv选中一行数据时,将信息显示到文本框中
        private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //获取这条数据中的每个列中的值
            if (dgv.SelectedRows.Count>0)
            {
                //id name pinyin num
                lblId.Text = dgv.SelectedRows[0].Cells[0].Value.ToString();
                txtUName.Text = dgv.SelectedRows[0].Cells[1].Value.ToString();
                txtUPinYin.Text = dgv.SelectedRows[0].Cells[2].Value.ToString();
                txtUNum.Text = dgv.SelectedRows[0].Cells[3].Value.ToString();
            }
        }
        //修改数据
        private void btnEdit_Click(object sender, EventArgs e)
        {
            if (dgv.SelectedRows.Count>0)
            {
                int r = -1;
                //修改
                using (SqlConnection con=new SqlConnection(str))
                {
                    string sql =string.Format("update DeskInfo set DeskName='{0}',DeskNamePinYin='{1}',DeskNum='{2}' where DeskId={3}",txtUName.Text,txtUPinYin.Text,txtUNum.Text,lblId.Text) ;
                    using (SqlCommand cmd=new SqlCommand(sql,con))
                    {
                        con.Open();
                        r=cmd.ExecuteNonQuery();
                    }
                }
                string msg = r > 0 ? "操作成功" : "操作失败";
                MessageBox.Show(msg);
                LoadDeskInfoByDelFlag(0);
            }
        }

//显示有多少条数据
        private void btnDisplay_Click(object sender, EventArgs e)
        {
            //练习
            object obj;
            using (SqlConnection con = new SqlConnection(str))
            {
                string sql = "select count(*) from DeskInfo where DeskDelFlag=0";
                using (SqlCommand cmd=new SqlCommand(sql,con))
                {
                    con.Open();
                    obj = cmd.ExecuteScalar();
                }
            }
            MessageBox.Show(obj.ToString());
        }

//回收站,显示被删除的数据
        private void btnGs_Click(object sender, EventArgs e)
        {
            //显示被删除的数据
            LoadDeskInfoByDelFlag(1);
        }

//彻底删除
        private void btnCDelete_Click(object sender, EventArgs e)
        {
            string id = dgv.SelectedRows[0].Cells[0].Value.ToString();
            //还是 更新 该标识 5  恢复 
            //稍稍修改一下标识

int r = -1;
            using(SqlConnection con=new SqlConnection(str))
            {
                string sql = "update DeskInfo set DeskDelFlag=5 where DeskId=" + id;
                using (SqlCommand cmd=new SqlCommand(sql,con))
                {
                    con.Open();
                  r=cmd.ExecuteNonQuery();
                }
            }

MessageBox.Show(r > 0 ? "操作成功" : "操作失败");
            LoadDeskInfoByDelFlag(1);
        }
    }
}

Ado.Net小练习02(小项目CUID的更多相关文章

  1. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...

  2. 小账本APP——软件项目风险管理及解决办法案例

    小账本APP——软件项目风险管理及解决办法案例 摘要 软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响.软件项目风险会影响项目计划的实现,如果项目风险变成现实, ...

  3. 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!

    微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布 Weixin-App-Shop 是捷微团队开发的微信小程序商城开源项目,涵盖了微信商城的全部功能,能够快速发布简单易用的小 ...

  4. 全栈项目|小书架|微信小程序-项目结构设计分包

    前面的文章 介绍了服务端的基础搭建以及用户模块的设计,接下来就是在服务端和客户端实现具体的业务了. 本篇文章先来介绍微信小程序开发的项目结构设计,也就是项目分包情况. 由于项目是在<极客时间-9 ...

  5. 玩玩小程序:使用 WebApi 交互打造原生的微信小程序 - 图灵小书架

    使用 WebApi 交互打造原生的微信小程序 - 图灵小书架 目录 介绍 源码地址 扫一扫体验 代码分析 其它相关信息(互联网搜集) 介绍 定时抓取图灵社区官网的首页.最热.推荐和最新等栏目的相关图书 ...

  6. Android Testing学习02 HelloTesting 项目建立与执行

    Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...

  7. 有趣 GIF 动图集 - 仿佛每张小动图都诉说了一个小笑话或者小故事

    点这里 来自法国南特(Nantes)的 Guillaume Kurkdjian 目前还是个学生.Kurkdjian 擅长创作一些平面动态图像,这些有趣的小动图仿佛每张都诉说了一个小笑话或者小故事,像个 ...

  8. 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)

    微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...

  9. 微信小程序+“芝麻小客服”可设自动关注公众号,助力运营闭环

    微信小程序全面上线已经接近1年的时间,从最初的"用完即走"理念到2017年总计更新开放60余次的功能创新,微信小程序不一定会爆发下一次的红利,但绝对是微信生态中重要的一环. 芝麻小 ...

随机推荐

  1. CSDN 自动评论

    转载说明 本篇文章可能已经更新,最新文章请转:http://www.sollyu.com/csdn-auto-reviews/ 说明 当打开http://download.csdn.net/my/do ...

  2. apache和php扩展问题

    1.redis扩展: windows下开发用的xampp集成的环境,想装个php-redis扩展,扩展的github地址:  https://github.com/nicolasff/phpredis ...

  3. xtraScrollableControl 滚动条随鼠标滚动

    代码如下 // using System; using System.Windows.Forms; using DevExpress.XtraEditors; namespace WindowsFor ...

  4. python(四)数据持久化操作 文件存储

    1.写入 导入pickle包 然后组织一个列表my_list,保存为pkl格式,可以是任意格式 在磁盘下回出现一个保存的文件 2.读取

  5. javascript的setTimeout以及setInterval休眠问题。

    前端码农们在做项目中时候,必定不可少的需要做到轮播效果.但是有些特殊的需求,比如: 需要做到第一个容器内容轮播滚动之后,第二个容器内部再轮播滚动,再第三个容器内容轮播滚动. 这时候我的一开始的思路是: ...

  6. canvas 的学习

    canvas 绘制直线的API有: 1.moveTo()起点坐标. 2.lineTo()绘制的直线 3. fillStyle以及 flii()是绘制实体的 4. strokeStyle 和stroke ...

  7. AWS--EC2基本概念

    原文:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html EC2:Elastic Compute Cloud 特性包括: ...

  8. 地形图比例尺、等高距和DEM分辨率关系

    地表面的形态是很复杂的,不同地貌类型的形态是由它的相对高度、地面坡度以及所处的地势所决定的,它们是影响等高距的主要因素。从等高距计算公式可以看出,当地图比例尺和图上等高线间的最小距离简称等高线间距确定 ...

  9. MQ 2035(MQRC_NOT_AUTHORIZED)

    当使用MQ7.1或7.5时,如果使用MQ管理员账号去连接MQ服务器,可能会报以下的错误,提示你权限不足. 2035 MQRC_NOT_AUTHORIZED 在之前的版本中是没有这个问题的. 原因是在7 ...

  10. 蜗牛历险记(二) Web框架(上)

    接上篇所说,本篇主要内容是讲述如何使用Autofac来管理整个平台的生命周期(初级). 一.简述 插件式Web开发的同学应该还会记得PreApplicationStartMethod这个Assembl ...