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-93 程序执行效果图

4-4  本章小结

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




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

目录
相关文章
|
2月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
17 1
|
2月前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
9 0
|
2月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
68 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
5月前
|
SQL 开发框架 .NET
|
5月前
|
XML SQL 开发框架
|
17天前
|
存储 测试技术 计算机视觉
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
36 0
|
2月前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
12 0
|
3月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
72 0
|
5月前
|
开发框架 .NET
|
5月前
|
开发框架 .NET C#