[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. Image Captioning代码复现

    Image caption generation: https://github.com/eladhoffer/captionGen Simple encoder-decoder image capt ...

  2. SqlServer 禁止架构更改的复制中手动修复使发布和订阅中分别增加的字段同步

    原文:SqlServer 禁止架构更改的复制中手动修复使发布和订阅中分别增加的字段同步 由于之前的需要,禁止了复制架构更改,以至在发布中添加一个字段,并不会同步到订阅中,而现在又在订阅中添加了一个同名 ...

  3. 程序异常崩溃后用windbg辅助调试解决的经验 以及 堆栈问题调试经验

    1,程序异常崩溃后用windbg辅助调试解决的经验  状况:我的程序调用别人的库做 文件写入工作. 在这一过程中出现异常,程序崩溃. 经反复检查,认为自己的程序没有错,但无法判断在别人库里哪里有错. ...

  4. WPF修改窗体标题栏的颜色

    WPF程序通常情况下没办法修改窗体标题栏的样式,包括标题栏的背景颜色. 不过借助一个叫Fluent.Ribbon的第三方控件,貌似可以修改标题栏的背景颜色. 可以通过NuGet来安装这个控件:Inst ...

  5. 什么是MonoGame?

    MonoGame是XNA的一个开源实现.主要用于游戏开发. 官方网站:http://www.monogame.net/ 源码地址:https://github.com/MonoGame/MonoGam ...

  6. webform的图片防盗链

    最近用到域的问题,不是同一主机的请求将不允许请求此页面. 这其实和图片防盗链的本质是一样的. 通过两个属性:由于当时用的aspx视图引擎,所以需要通过HttpContext.Current才能拿到ht ...

  7. Android 8通过startService引起crash问题

    Android 8.0 不再允许后台service直接通过startService方式去启动,否则就会引起IllegalStateException.解决方式: if (Build.VERSION.S ...

  8. C++迭代器 iterator

    1. 迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型.(1) 每种容器类型都定义了自己的迭代器类型,如vector:vector<int>::iterator iter ...

  9. libevent for qt的讨论

    一直对Qt官方的QtNetwork模块抱有遗憾,Qt自带的网络模块用的是select模型,无法支持高并发的服务器开发.最近在网上看到有个libevent for qt的东西,它直接替换了Qt的sele ...

  10. [書訊]《.NET 依賴注入》 (2014-12-08 更新)

    书 名:.NET 依赖注入 页 数:235 格 式:PDF.EPUB.MOBI难易度:中阶至进阶出版日期:2014 年 12 月 8 日ISBN:9789574320684 简介 本书内容是关于 .N ...