数据库的c#实现 《查询数据》以及代码的封装

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.数据库查询多条记录,每次读取一条记录,指针指向下一条记录

  1. 注意,在处理查询处理的时候,用到的不是ExecuteNoQuery工具,而是用的ExecuteReader工具
    2.在程序设计编码时,可以将主程序的输出类型改为控制台输出的方式


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(固定)右边和下边












猜你喜欢

转载自blog.csdn.net/qq_42036616/article/details/80201426