前台界面:

后台代码:

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. AE实现投影定义和投影转换

    添加引用ESRI.ArcGIS.DataManagementTools 1.获取要定义和要转换的投影 IWorkspaceFactory wsf = new ShapefileWorkspaceFac ...

  2. nodejs remote链接mysql数据库总结

    nodejs链接远端mysql,这个折腾了一个上午才搞定.本以为,直接使用就OK了,但是发现不行,后来查阅各种资料后,终于找到了方法. nodejs链接远端数据库主要分为几个步骤: 1)安装node- ...

  3. wall time和monotonic time[转载]

    在一些系统调用中需要指定时间是用CLOCK_MONOTONIC还是CLOCK_REALTIME,以前总是搞不太清楚它们之间的差别,现在终于有所理解了.     CLOCK_MONOTONIC是mono ...

  4. HACMP 学习笔记--转载自wangjialiang-csdn博客

    An41 教程: Ha: 初始阶段的规划最重要 第一部分:概念和模型 Ha 目标:掩盖和消除计划和非计划的宕机 Eliminate SPOF :消除单节点故障, single point of fai ...

  5. Spring MVC Controller中GET方式传过来的中文参数会乱码的问题

    Spring MVC controller 这样写法通常意味着访问该请求,GET和POST请求都行,可是经常会遇到,如果碰到参数是中文的,post请求可以,get请求过来就是乱码.如果强行对参数进行了 ...

  6. DTCMS,手机网站访问跳转到DTCMS官网解决方法

    mobile\js\base.js main\js\common.js 去掉location.href = 'http://m.dtcms.net'; 也可以设定手机访问跳转到指定域名

  7. Asp.net Response.Redirect with post data

    string url = String.Format("{0}://{1}/{2}", Request.Url.Scheme, Request.Url.Authority, &qu ...

  8. HttpClient 建立http连接,https连接,传输数据文件

    package com.bluedon.bsmon.http; import java.io.File; import java.nio.charset.Charset; import java.se ...

  9. jquery checkBox的问题

    在新版的jquery中选择ckeckbox最好使用prop方法,否则会出现一些问题.比如手动点击取消,再使用代码全选或者反选时候就不好使啦!!!

  10. web.xml中JSP配置及 EL表达式

    web.xml 中JSP配置.servlet配置 及 EL表达式 [摘要] servlet 基本配置 <servlet> <servlet-name>LoginServlet& ...