4-2 ADO.NET-查询和检索数据13

//==========动态程序设计部分================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsApplication1
{
    public partial class Form14 : Form
    {
        public Form14()
        {
            InitializeComponent();
        }
        Buessiness teacher = new Buessiness();
        Mydatabase DB = new Mydatabase();
        /// <summary>
        ///  dataGridView1的数据绑定事件编码
        /// </summary>
        public void bind(int i)
        {
            string sql = "";
            if (i == 1)
            {
                sql = "select tcno,sktime from tc where tno=2 and cno in (select distinct cno from sc where isposted=1) order by tcno asc";
            }
            if (i == 2)
            {
                string skxq = comboBox1.SelectedValue.ToString();
                sql = "select tcno,sktime from tc where tno=2 and cno in (select distinct cno from sc where isposted=1) and skxq=" + skxq + " order by tcno desc";
            }
            if (i == 3)
            {
                string skbj = comboBox2.SelectedValue.ToString();
                sql = "select tcno,sktime from tc where tno=2 and cno in (select distinct cno from sc where isposted=1) and bno=" + skbj + " order by tcno desc";
            }
            DataTable dt = DB.GetDataTable(sql);
            dataGridView1.DataSource = dt;
            dataGridView1.AllowUserToAddRows = false;
        }
        /// <summary>
        /// 初始化事件
        /// </summary>
        private void Form14_Load(object sender, EventArgs e)
        {
            //首先,将教师的信息显示出来。假设我们进入系统教师的ID编号是2号,来自teacher
            int user_id = 2;
            int dno, xb;//变量表示为单位编号和系部编号
            string zc, degree, dname, tname;
            //变量表示:职称、学位信息、单位名称和教师姓名
          teacher.Getteacherinfo(user_id, out dno, out xb, out zc, out degree, out dname, out tname);
            label6.Text = Convert.ToString(user_id).Trim();
            label7.Text = tname.Trim();
            label8.Text = degree.Trim();
            label9.Text = dname.Trim();
            label10.Text = zc.Trim();
            //其次,添加前五个学期的信息到comboBox1
            string sql2 = "select distinct top 5 skxq,SUBSTRING(skxq,1,4)+'-'+cast((CAST (SUBSTRING(skxq,1,4) AS int)+1) as varchar(10))+'学年第'+SUBSTRING(skxq,5,1)+'学期' as skxqname  from tc order by skxq desc";
            DataSet ds1 = DB.GetDataSet(sql2);
            comboBox1.DataSource = ds1.Tables[0];
            comboBox1.DisplayMember = "skxqname";
            comboBox1.ValueMember = "skxq";
            //然后,添加按照班级查询信息
            string sql = "select bno,bname from class where bno in(select bno from tc where tno=2)";
            DataSet ds2 = DB.GetDataSet(sql);
            comboBox2.DataSource = ds2.Tables[0];
            comboBox2.DisplayMember = "bname";
            comboBox2.ValueMember = "bno";
            //最后,显示电子网格中的数据信息
            bind(1);
        }
       
      private void dataGridView1_RowPrePaint_1(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            int k = dataGridView1.Rows.Count;
            if (e.RowIndex != -1)
            {
                DataGridViewRow DGrow = dataGridView1.Rows[e.RowIndex];
                int i = Convert.ToInt32(DGrow.Cells["tcno"].Value);
                //此处需要获取课程表的课程性质名称
                int cno, tno, sktime, bno, zt, schno, stunum, yy, wy, ztbk, stunumbk, yybk, wybk, ztqk, stunumqk, yyqk, wyqk;
                string skxq, tname, cname, bname, skxqn, schname;
                teacher.GetCourselist(i, out cno, out tno, out skxq, out sktime, out bno, out tname, out cname, out bname, out skxqn, out zt, out schno, out schname, out stunum, out yy, out wy, out ztbk, out stunumbk, out yybk, out wybk, out ztqk, out stunumqk, out yyqk, out wyqk);
                DGrow.Cells["skxq"].Value = skxqn;
                DGrow.Cells["banji"].Value = bname;
                DGrow.Cells["school"].Value = schname;
                DGrow.Cells["coursename"].Value = cname;
                DGrow.Cells["sktime"].Value = sktime.ToString();
                DGrow.Cells["stunum"].Value = stunum.ToString();
                DGrow.Cells["yy"].Value = yy.ToString();
                DGrow.Cells["wy"].Value = wy.ToString();
            }
        }
        /// <summary>
        /// 按照学期信息查询
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            bind(2);
        }
        /// <summary>
        /// 按照课程查询
        /// </summary>
        private void button2_Click(object sender, EventArgs e)
        {
            bind(3);
        }
        /// <summary>
        ///查询全部
        /// </summary>
        private void button3_Click(object sender, EventArgs e)
        {
            bind(1);
        }
    }
}
运行后的效果如图493所示
4-2 ADO.NET-查询和检索数据13
4-93 程序执行效果图

4-4  本章小结

ADO.NET小结,请参加图494所示:
4-2 ADO.NET-查询和检索数据13
4-94 ADO.NET总结图
图中内部箭头表示应用程序从数据库读取数据,外围箭头表示从应用程序向数据库写数据。对于本章知识点而言,涉及面广,知识结构复杂,但回头总结我们不难发现,以下的知识点是学习本章知识的重点和难点:
nDataSet对象内表示的数据是数据库的部分或全部的断开式内存副本
nDataAdapter对象用来填充数据集和用来更新数据集到数据库,这样方便了数据库和数据集之间的交互
n类型化数据集对象是DataSet类的派生类的实例,这些类都基于XML结构
nDataTable表示一个内存数据表,而DataColumn表示DataTable中列的结构
nDataViewDataTable中存储的数据的表示层
nDataReader对象提供只进、只读和连接式数据访问,并要求使用专用的数据连接
nDataReader对象提供检索强类型化数据的方法
n在数据库编程中使用数据绑定控件时, DataGridView控件是Visual Studio .NET中提供的最通用、最强大和最灵活的控件
nDataGridView控件以表的形式显示数据,并根据需要支持数据编辑功能,如插入、更新、删除、排序和分页
n使用DataSource属性为DataGridView控件设置一个有效的数据源
n调用Update()方法来执行相应的插入、更新和删除操作时,将执行DataAdapterInsertCommandUpdateCommandDeleteCommand属性
n定制DataGridView界面
 
课 后 练 习
1、本练习目标是要求编写一个应用程序,可以添加、修改、删除学生基本信息。用户界面如图4-95所示,数据库为school1,仅用了两个表,mz是表示民族的表,student是表示学生的表。具体字段设计情况请参见图496,数据库环境是SQL Server 2005
4-2 ADO.NET-查询和检索数据13
4-95 学生基本信息应用程序界面图
4-2 ADO.NET-查询和检索数据13
4-96 数据库设计图
2、本练习目标是要求编写一个应用程序,实现可以添加、修改、删除、查询数据库中学生基本信息的功能。用户界面如图497所示,数据库为图4-96所示。
4-2 ADO.NET-查询和检索数据13
4-97 学生基本信息应用程序界面图




本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/216112,如需转载请自行联系原作者

上一篇:【Linux】一步一步学Linux——初识Linux命令解析器(10)


下一篇:DateTime.ToString("dd/MM/yyyy");后,不能直接Convert.ToDateTime的解决: