[1]快捷键

工具箱:ctrl+w+x 首字母定位控件范围

属性:F4 或ctrl+w+p Tab跳转 ,home 与end也有效

[2]连接字符串

string str = "Data Source=xy-pc;Initial Catalog=myitcast;Integrated Security=true";

[*]

[3]

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace _06大项目

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void btnAdd_Click(object sender, EventArgs e)

{

//获取文本框的内容--要判断(你们做)

string name = txtAddName.Text;//姓名

int gender = txtAddGender.Text == "男" ? 1 : txtAddGender.Text == "女" ? 0 : 2;//站着埋-坑//大坑

//判断一下性别的值 是1还是0 如果都不是则告诉用户输入错误请重新输入(留给你们了)

int age = Convert.ToInt32(txtAddAge.Text);//年龄--坑(留给你们了)

string phone = txtAddPhone.Text;//电话号码

//创建连接字符串

string str = "Data Source=xy-pc;Initial Catalog=myitcast;Integrated Security=true";

int count = -1;

//连接数据库

using (SqlConnection con = new SqlConnection(str))

{

string sql = string.Format("insert INTO TblStudent(TSName,TSGender,TSAge,TSPhone,tclassid)VALUES('{0}',{1},{2},'{3}',{4})", name, gender, age, phone, 1);

using (SqlCommand cmd = new SqlCommand(sql, con))

{

//打开数据库

con.Open();

count = cmd.ExecuteNonQuery();//执行sql语句

}

}

//执行sql语句

if (count > 0)

{

MessageBox.Show("添加成功");

}

else

{

MessageBox.Show("添加失败");

}

//结果

}

 

private void Form1_Load(object sender, EventArgs e)

{

LoadAllStudent();//加载学生

 

 

}

 

private void LoadAllStudent()

{

//创建一个集合,存储每个学生对象

List<Student> list = new List<Student>();

//封装成方法---还要刷新呢

//查询所有的数据

string str = "Data Source=xy-pc;Initial Catalog=myitcast;Integrated Security=true";//创建连接字符串

//连接数据库

using (SqlConnection con = new SqlConnection(str))

{

string sql = "select tsid, TSName,TSGender,TSAge,TSPhone FROM TblStudent";

using (SqlCommand cmd = new SqlCommand(sql, con))

{

con.Open();//打开数据库

using (SqlDataReader sda = cmd.ExecuteReader())

{

if (sda.HasRows)//如果为true证明至少有一条数据

{

while (sda.Read())//读取到下一条

{

// sda[1]//每一列的数据

 

Student stu = new Student();//创建一个学生对象

stu.TSId = sda.GetInt32(0);//主键id的值

stu.TSName = sda["tsname"].ToString();

stu.TSGender = sda.GetBoolean(2) == true ? '男' : '女';

stu.TSAge = sda.GetInt32(3);//年龄

stu.TSPhone = sda.GetString(4);

list.Add(stu);

}

}

}

}

}

 

dgv.DataSource = list;//把集合绑定到控件上

}

 

private void deletetsm_Click(object sender, EventArgs e)

{

//首先判断用户是否选中行

if (dgv.SelectedRows.Count > 0)

{

int count=-1;

string id = dgv.SelectedRows[0].Cells[0].Value.ToString();

//创建连接字符串

string str = "Data Source=xy-pc;Initial Catalog=myitcast;Integrated Security=true";

//连接数据库

using (SqlConnection con=new SqlConnection(str))

{

string sql = "delete from tblstudent where tsid="+id;

using (SqlCommand cmd=new SqlCommand(sql,con))

{

con.Open();

count =cmd.ExecuteNonQuery();

 

}// end using

}//end using

if (count>0)

{

LoadAllStudent();

MessageBox.Show("删除成功");

}

else

{

MessageBox.Show("删除失败");

}

 

}//end if

 

 

 

//获取选中行的id

 

//MessageBox.Show("删除了");

}

 

private void dgv_RowEnter(object sender, DataGridViewCellEventArgs e)

{

//是否有选中的行

if (dgv.SelectedRows.Count>0)

{

//获取 id 姓名 性别 年龄

 

labId.Text = dgv.SelectedRows[0].Cells[0].Value.ToString();//id的值

//姓名

txtUpName.Text = dgv.SelectedRows[0].Cells[1].Value.ToString();

//性别

txtUpGender.Text = dgv.SelectedRows[0].Cells[2].Value.ToString();

//年龄

txtUpPhone.Text = dgv.SelectedRows[0].Cells[3].Value.ToString();

txtUpAge.Text = dgv.SelectedRows[0].Cells[4].Value.ToString();

}

}

 

private void btnUpdate_Click(object sender, EventArgs e)

{

int count = -1;

//首先获取 当前选中行的id

string id = labId.Text;

//int gender = txtUpGender.Text == "男" ? 1 : txtUpGender.Text == "女" ? 0 : 2;

int gender = txtUpGender.Text == "男" ? 1 : 0;

// 创建连接数据库的字符串

string str = "Data Source=xy-pc;Initial Catalog=myitcast;Integrated Security=true";

//连接数据库

using (SqlConnection con=new SqlConnection(str))

{

 

string sql =string.Format( "update tblstudent set TSName='{0}',TSGender={1},TSAge={2},TSPhone='{3}' where tsid={4}",txtUpName.Text,gender,txtUpAge.Text,txtUpPhone.Text,id);

using (SqlCommand cmd=new SqlCommand(sql,con))

{

con.Open(); //打开数据库

count= cmd.ExecuteNonQuery();

}

}

if (count>0)

{

LoadAllStudent();//刷新

MessageBox.Show("修改成功");

}

else

{

MessageBox.Show("修改失败");

}

 

 

//执行

}

 

private void btnCount_Click(object sender, EventArgs e)

{

 

string count = "";

//创建连接字符串

string str = "Data Source=xy-pc;Initial Catalog=MyItcast;Integrated Security=True";

//连接数据库

using (SqlConnection con=new SqlConnection(str))

{

string sql = "select count(*) from tblstudent";

using (SqlCommand cmd=new SqlCommand(sql,con))

{

con.Open();//打开数据库

count= cmd.ExecuteScalar().ToString();

}

}

//打开数据库

MessageBox.Show("一共有"+count+"个童鞋");

//执行sql语句

}

 

 

}

}

//数据转对象

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace _06大项目

{

public class Student

{

// TSId, TSName, TSGender, TSAddress, TSPhone, TSAge, TSBirthday, TSCardId, TClassId

//用到哪列写哪列

 

//查询四列

 

private int _tSId;

 

public int TSId

{

get { return _tSId; }

set { _tSId = value; }

}

private string _tSName;

 

public string TSName

{

get { return _tSName; }

set { _tSName = value; }

}

private char _tSGender; //坑

 

public char TSGender

{

get { return _tSGender; }

set { _tSGender = value; }

}

private string _tSPhone;

 

public string TSPhone

{

get { return _tSPhone; }

set { _tSPhone = value; }

}

private int _tSAge;

 

public int TSAge

{

get { return _tSAge; }

set { _tSAge = value; }

}

 

 

 

}

}

 

20131207-ADO.NET-第十六天的更多相关文章

  1. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  2. javaSE第二十六天

    第二十六天    414 1:网络编程(理解)    414 (1)网络编程:用Java语言实现计算机间数据的信息传递和资源共享    414 (2)网络编程模型    414 (3)网络编程的三要素 ...

  3. javaSE第十六天

    第十六天    140 1:List的子类(掌握)    140 (1)List的子类特点    140 (2)ArrayList    141 A:没有特有功能需要学习    141 B:案例    ...

  4. 第三百五十六天 how can I 坚持

    一年了,三百五十六天.写个算法算下对不对. 今天突然想买辆自行车了.云马智行车,还是捷安特,好想买一辆. 网好卡.貌似少记了一天呢,357了.好快. 睡觉了,还没锻炼呢,太晚了. 1458748800 ...

  5. IT第二十六天 - Swing、上周总结

    IT第二十六天 上午 Swing 1.对于方法的参数如果是int数值类型,应该直接调用该类中的常量属性,而不应该直接填入数字 2.Toolkit类中定义的方法是可以直接访问本地计算机(操作系统)信息的 ...

  6. Python第二十六天 python装饰器

    Python第二十六天 python装饰器 装饰器Python 2.4 开始提供了装饰器( decorator ),装饰器作为修改函数的一种便捷方式,为工程师编写程序提供了便利性和灵活性装饰器本质上就 ...

  7. OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  8. 孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解

    孤荷凌寒自学python第八十六天对selenium模块进行较详细的了解 (今天由于文中所阐述的原因没有进行屏幕录屏,见谅) 为了能够使用selenium模块进行真正的操作,今天主要大范围搜索资料进行 ...

  9. 孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6

    孤荷凌寒自学python第七十六天开始写Python的第一个爬虫6 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 不过由于对python-docx模 ...

  10. 孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5

    孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongo ...

随机推荐

  1. Win10《芒果TV》发布两周年纪念特别献礼,陪你度国庆,好礼送不停

    2015年芒果TV和微软中国联姻,在Windows10发布之际,共同宣告了Win10版<芒果TV>的诞生,第一个版本于2015年9月30日登陆Windows商店,历经28次迭代,现在她两岁 ...

  2. Android零基础入门第46节:下拉框Spinner

    原文:Android零基础入门第46节:下拉框Spinner 上一期学习了GridView的使用,你已经掌握了吗?本期一起来学习Spinner的使用. 一.认识Spinner Spinner其实就是一 ...

  3. IP解析

    import sys,re ip_1_stat = {} source_fp = open("ip_region","r") p = re.compile(&q ...

  4. 中国目前的房地产总市值占GDP的比例为411%,远远高于世界平均水平的260%

    到2015年统计,一线城市空置率22%,二线城市24%.中央开始喊要供应侧改革了. 中国目前的房地产总市值占GDP的比例为411%,远远高于世界平均水平的260%.无疑已经蕴含着比较明显的泡沫. 那么 ...

  5. Qt 5.6 5.8 vs2015 编译静态库版本(有全部的截图)good

    安装Qt 去Qt官网下载Qt安装包  安装Qt和源码,一定要勾选source选项  添加bin到系统变量  工具 需要python3和 perl. vs2015 第三方工具,到官方下载安装  在命令行 ...

  6. 进程交互还可以使用QSharedMemory

    官方例子: http://doc.qt.io/qt-5/qtcore-ipc-sharedmemory-example.html 查了一下,QSharedMemory没有自带任何信号.我的想法: 1. ...

  7. Delphi编写系统服务:完成端口演示

    在开发大量Socket并发服务器,完成端口加重叠I/O是迄今为止最好的一种解决方案,下面是简单的介绍:   “完成端口”模型是迄今为止最为复杂的一种I/O模型,特别适合需要同时管理为数众多的套接字,采 ...

  8. RoboVM 1.1 发布,Java 转原生平台代码

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

  9. kubernetes实战篇之windows添加自签ca证书信任

    系列目录 由于服务端设置了https访问,因此如果通过浏览器访问时会提示证书不被信任,但是仍然可以通过处理继续访问.但是在自动化环境中,都是通过命令来请求的,这样不受信任的https就会报错误,这样我 ...

  10. 【webAssembly系列】webAssembly初探究竟

    一.前言 自从JavaScript诞生开始,到现在开始变成流行的编程语言,背后的是web发展所推动的.web应用的变得更多更复杂,但是渐渐暴露出JavaScript的问题: (1)语法太灵活导致开发大 ...