1.查询代码
注意,在操作数据库时,当运行时出现查询语句所在的一句报错,可能是自己的sql语言有问题,为了避免这种错误,可以将先将所要执行的代码放在数据库中先执行一下,避免错误。
using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=MyCar;User ID=sa;Password =2323010676;")) { conn.Open(); //这里用参数 String sql = "select COUNT(*) from Car"; //创建命令对象,前面一个表示执行的语句,后面一个表示执行语句需要连接的数据库 SqlCommand cmd = new SqlCommand(sql, conn); //查询返回的是对象,要用Object类型接收,再转化想要的类型到标签上 Object result = cmd.ExecuteScalar(); lblSum.Text = result.ToString(); }
2.代码的封装
快捷键 ctrl + R + M
private void btnSum_Click(object sender, EventArgs e) { getCount(); }
需要在页面加载完成时添加方法
public Form1() { //页面加载完成就添加这个方法 InitializeComponent(); getCount(); }
3.数据库查询多条记录,每次读取一条记录,指针指向下一条记录
- 注意,在处理查询处理的时候,用到的不是ExecuteNoQuery工具,而是用的ExecuteReader工具
using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=MyCar;User ID=sa;Password =2323010676;")) { conn.Open(); //这里用参数 String sql = "select title,speed,info from Car"; //创建命令对象,前面一个表示执行的语句,后面一个表示执行语句需要连接的数据库 SqlCommand cmd = new SqlCommand(sql, conn); //创建查询的结果集,用另一个封装的方法,ExecuteReader SqlDataReader read = cmd.ExecuteReader(); while (read.Read()) { Console.WriteLine("车标:" + read["Title"] + ",车名:" + read["Info"]); } }
4.将查询结果显示到windows 窗口中
a.添加控件,类似excel表格的输出形式,在控件中选择数据栏,再添加DataGirdView布局
b.编写想要输出的代码,用类(实体类)和容器写,中间利用泛型来接收数据。在编辑属性的那一栏选择添加类,就是实体类
c.在DataGirdView表格中,点击设计窗口时的上面倒三角的按钮编辑想要输出的内容,如下注意数据要改为编辑的内容
d.设置完成后,可以看到实体类里面对应的属性,与DataGirdView表中的列一一对应。
namespace My { class User { public String Name { get; set; } public String Age { get; set; } } }
基于以上操作,联系本实验
private void getCount() { //定义一个List集合用于存放汽车对象 List<Car> cars = new List<Car>(); using (SqlConnection conn = new SqlConnection("Data Source=DESKTOP-BEUJ3C4;Initial Catalog=MyCar;User ID=sa;Password =2323010676;")) { conn.Open(); //这里用参数 String sql = "select title,speed,info from Car"; //创建命令对象,前面一个表示执行的语句,后面一个表示执行语句需要连接的数据库 SqlCommand cmd = new SqlCommand(sql, conn); //创建查询的结果集,用另一个封装的方法,ExecuteReader SqlDataReader read = cmd.ExecuteReader(); while (read.Read()) { //每一行代表实例化一辆车,则实例化一个汽车对象 Car car = new Car(); car.Name = (read["Title"]+""); //将数据库中的对象取出时为对象,转换为字符串类型 car.Speed = Convert.ToInt32(read["speed"]);//将数据库中的对象取出时为对象,转换为int类型 car.Info = (read["Info"] + ""); //将数据库中的对象取出时为对象,转换为字符串类型 cars.Add(car);//将汽车对象添加到集合中 } dgvCar.DataSource = cars; //保存数据到布局控件 read.Close(); //关闭控件 } }
这个布局只是对应左边和上面对应,而用过属性窗口设置Anchor(固定)右边和下边