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余次的功能创新,微信小程序不一定会爆发下一次的红利,但绝对是微信生态中重要的一环. 芝麻小 ...
随机推荐
- 页面get请求 中文参数方法乱码问题
对于get方式,请求参数中存在中文,可以使用下面的方法进行处理: 两次使用encodeURI()方法:例如:encodeURI(encodeURI(“中文”)),然后再服务器中使用URLDecoder ...
- CLI-error
SQL_ERROR: One of the following occurred: RecNumber was negative or 0. BufferLength was less than ze ...
- Unity3D编程回忆录,Unity3d视频教程,教父团队倾情之作
之前一直在看Unity3d的视频教程,包括很多老外的视频教程,老外的教程确实不错,技术含量很高,而且讲得很激情,让我有种恨不得一秒钟就想吧unity3d学个精通的冲动,只是,毕竟是英语教程,没办法,哎 ...
- bind()实现
bind()函数是在 ECMA-262 第五版才被加入:它可能无法在所有浏览器上运行.这就需要我们自己实现bind()函数了 简单实现bind()方法: Function.prototype.bind ...
- Limit参数优化MySQL查询的方法
在做一些查询时,总希望能避免数据库引擎做全表扫描,因为全表扫描时间长,而且其中大部分扫描对客户端而言是没有意义的.那么,在mysql中有那些方式是可以避免全表扫面?除了通过使用索引列或分区等方式来进行 ...
- asp.net mvc 伪静态路由配置
asp.net mvc实现伪静态路由必须按如下方式设置好,才能访问 .htm 或者.html页面 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspne ...
- Header:请求头参数详解
Header 解释 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html,application/json Accept-Charset 浏览器 ...
- Java中Map的用法详解
Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collecti ...
- mvc简单execl导出
直接上代码: public static byte[] GetExecl(DataTable dt, List<string> list) { var sbHtml = new Strin ...
- apache本地和局域网访问设置
apache本地和局域网访问设置 最近做项目需要同事ajax发项目给我,因为是测试环境,所以需要能访问我的服务器.我服务器直接用的wampserver.因为没有接触过,所以百度了一下,都是没有成功,后 ...