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,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
开发框架 JavaScript .NET
asp.net中条件查询+分页
asp.net中条件查询+分页
|
2月前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
41 2
|
4月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
|
5月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
4月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
4月前
|
SQL Oracle 关系型数据库
.NET 开源快捷的数据库文档查询和生成工具
【8月更文挑战第1天】推荐几款.NET开源数据库文档工具:1. DBDocumentor,支持多类型数据库,快速生成详尽文档;2. SqlDoc,界面简洁,自定义内容与格式;3. DBInfo,强大查询功能,支持多种导出格式。这些工具有效提升文档管理效率与质量。
|
5月前
|
C#
效率提升利器:一个在线的.NET源码查询网站
效率提升利器:一个在线的.NET源码查询网站
|
7月前
|
存储 测试技术 计算机视觉
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
|
7月前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
44 7