前台界面:

后台代码:

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. c++中"endl"和"\n"的区别

    看C++视频教程-范磊主讲(2.91G)视频搞懂了c++中"endl"和"\n"的区别. 学习笔记如下: c++中 换行符"endl"该符号 ...

  2. Windows下bmp文件格式

    6.1 BMP文件格式 6.1.1 简介 位图文件(Bitmap-File,BMP)格式是Windows采用的图像文件存储格式,在Windows环境下运行的所有图像处理软件都支持这种格式.Window ...

  3. C++ 数组名作为函数参数 都是我的错

    ]) { cout<<sizeof(arr); } 这样一道题,我以为输出的是100呢……32位系统,结果是4 因为:数组名在函数体中被当成一个指针来使用 #include <ios ...

  4. 编程之美 ---> 1.2中国象棋将帅问题

    上图,将帅不能碰面,列出将帅不碰面的所有可能情况,要求:程序只能用一个只有8位的变量(#define这样的就不算了) 为了更加符合程序员的口味,给将帅位置编号如下: 0--1--2 |    |   ...

  5. 2014-10 u-boot make过程分析

    /** ****************************************************************************** * @author    Maox ...

  6. rpm与yum命令的初步认识

    RPM:Red Hat package manager(RedHat软件包管理工具),现在为RPM is Package Manager好比windows里的文件扩展名为·exe的软件包. RPM的包 ...

  7. Excel数据复制到Winform控件ListView

    先给窗体添加一个右键菜单contextMenuStrip 加一个下拉项[粘贴] 粘贴事件: private void tsmiPaste_Click(object sender, EventArgs ...

  8. GridView - javascript 触发后台 OnSelectedIndexChanged

    1.ASPX <asp:GridView ID="gdvDealers" runat="server" AutoGenerateColumns=" ...

  9. ACE_linux:UDP通信

    1.涉及类 ACE_INET_Addr//ACE网络地址ACE_SOCK_Dgram//ACE报文 2.简介 UDP通信时无需像TCP那样建立连接和关闭连接,TCP编程时需要通过accept和conn ...

  10. oracle中的decode的使用

    含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN R ...