Ado.Net小练习02(小项目CUID
前台界面:
后台代码:
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的更多相关文章
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...
- 小账本APP——软件项目风险管理及解决办法案例
小账本APP——软件项目风险管理及解决办法案例 摘要 软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响.软件项目风险会影响项目计划的实现,如果项目风险变成现实, ...
- 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!
微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布 Weixin-App-Shop 是捷微团队开发的微信小程序商城开源项目,涵盖了微信商城的全部功能,能够快速发布简单易用的小 ...
- 全栈项目|小书架|微信小程序-项目结构设计分包
前面的文章 介绍了服务端的基础搭建以及用户模块的设计,接下来就是在服务端和客户端实现具体的业务了. 本篇文章先来介绍微信小程序开发的项目结构设计,也就是项目分包情况. 由于项目是在<极客时间-9 ...
- 玩玩小程序:使用 WebApi 交互打造原生的微信小程序 - 图灵小书架
使用 WebApi 交互打造原生的微信小程序 - 图灵小书架 目录 介绍 源码地址 扫一扫体验 代码分析 其它相关信息(互联网搜集) 介绍 定时抓取图灵社区官网的首页.最热.推荐和最新等栏目的相关图书 ...
- Android Testing学习02 HelloTesting 项目建立与执行
Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...
- 有趣 GIF 动图集 - 仿佛每张小动图都诉说了一个小笑话或者小故事
点这里 来自法国南特(Nantes)的 Guillaume Kurkdjian 目前还是个学生.Kurkdjian 擅长创作一些平面动态图像,这些有趣的小动图仿佛每张都诉说了一个小笑话或者小故事,像个 ...
- 微信小程序——智能小秘“遥知之”源码分享(语义理解基于olami)
微信小程序智能生活小秘书开发详解 >>>>>>>>>>>>>>>>>>>>> ...
- 微信小程序+“芝麻小客服”可设自动关注公众号,助力运营闭环
微信小程序全面上线已经接近1年的时间,从最初的"用完即走"理念到2017年总计更新开放60余次的功能创新,微信小程序不一定会爆发下一次的红利,但绝对是微信生态中重要的一环. 芝麻小 ...
随机推荐
- 抓取dump
1,在程序奔溃前部署.adplus.exe -crash -pn explorer.exe -o d: -crash:当进程挂掉的时候抓取dump,只能抓取到进程报错时的信息,如果进程不报错,就无法抓 ...
- Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记
睡眠机制 我们活着的时候,大脑会产生脑电波.脑电图仪器通过贴在人头上的一些电极读出脑电波的活动,然后把活动用图表显示出来. 睡眠过程可以分为5个过程,划分依据与大脑发出的脑电波类型. 当人清醒时,大脑 ...
- encodeURIComponent=>Uri.EscapeDataString
javascript: encodeURIComponent=> C#: Uri.EscapeDataString http://stackoverflow.com/questions/5754 ...
- CSS3单位
em 做前端的应该对em不陌生,不是什么罕见的单位,是相对单位,参考物是父元素的font-size,具有继承的特点.如果字体大小是16px(浏览器的默认值),那么 1em = 16px. 不过,这样使 ...
- 认识HTML5
引言,认识两个标准制定的组织 在讲什么是Html5之前得先了解两个组织:WHATWG :网页超文本技术工作小组(英语:Web Hypertext Application Technology Work ...
- nginx如何实现404状态返回 200隐藏URL
以http://WWW.cnblogs.COM为例: server { listen 80; server_nam ...
- xml学习总结(二)
XML Schema (1)Schema内置类型 ->字符串类型 <strlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins ...
- QT定制有标题的扁平化下拉框控件
关键字:QT,QComboBox,QLineEdit,QListView,QPushButton,QMenu,QWidgetAction,setStyleSheet OS:Windows 7 方法一: ...
- 编译andriod源码出错:java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported
问题:java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported update-java-alte ...
- 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
步骤一:首先自定义类(这里Himi自定义类名 “MySprite”) MySprite.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // // ...