[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. 苹果ios用js的Date()出现NaN问题解决办法

    原文:苹果ios用js的Date()出现NaN问题解决办法 ios使用如下方法获得NaN,安卓手机则是正常计算,解决方法是换个这个时间的格式 new Date("2017-04-28 23: ...

  2. 使窗体拥有透明效果的API

    一.背景FlashGet的透明效果大家羡慕吧.传统的Windows应用程序想实现半透明效果,一般来说需要处理自己的窗口的WM_Paint消息窗口,很麻烦.现在好了,SetLayeredWindowAt ...

  3. 预编译加速编译(precompiled_header),指定临时文件生成目录,使项目文件夹更干净(MOC_DIR,RCC_DIR, UI_DIR, OBJECTS_DIR),#pragma execution_character_set("UTF-8")"这个命令是在编译时产生作用的,而不是运行时

    预编译加速编译 QT也可以像VS那样使用预编译头文件来加速编译器的编译速度.首先在.pro文件中加入: CONFIG += precompiled_header 然后定义需要预编译的头文件: PREC ...

  4. QT Udp组播(穿透)

      http://blog.csdn.net/victoryknight/article/details/7814243 主题 UDPQt路由器 局域网内的两台机器如果隔有路由器,那么这两台机器之间不 ...

  5. 如何让你的Sublime和Codeblocks支持C++11

    闲来没事看了一下C++11,比起C++0x多了很多新功能,像auto变量,智能指针等,g++4.7以上版本也提供了对C++11的支持,但是,如何在你的编辑器上执行C++11代码呢? 刚开始以为用法和以 ...

  6. Python Re 模块超全解读!

    re模块下的函数 compile(pattern):创建模式对象 import repat=re.compile('A')m=pat.search('CBA')                     ...

  7. Spring Boot2(六):使用Spring Boot整合AOP面向切面编程

    一.前言 众所周知,spring最核心的两个功能是aop和ioc,即面向切面和控制反转.本文会讲一讲SpringBoot如何使用AOP实现面向切面的过程原理. 二.何为aop ​ aop全称Aspec ...

  8. MediatR一个.net中简单好用的中介者模式实现方案

    MediatRGit地址:https://github.com/jbogard/MediatR 1.安装妞盖特包 一般来说只需要安装一个MediatR就行了,.net core程序需要再安装一个Med ...

  9. Python 图片识别

    Tesseract是开源的OCR引擎. 需要安装tesserocr.opencv-python.tesseract-ocr pip install tesserocr pip install open ...

  10. 13 | 效率为王:脚本与数据的解耦 + Page Object模型