开发者社区> 余二五> 正文

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总结图
图中内部箭头表示应用程序从数据库读取数据,外围箭头表示从应用程序向数据库写数据。对于本章知识点而言,涉及面广,知识结构复杂,但回头总结我们不难发现,以下的知识点是学习本章知识的重点和难点:
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-95 学生基本信息应用程序界面图
4-96 数据库设计图
2、本练习目标是要求编写一个应用程序,实现可以添加、修改、删除、查询数据库中学生基本信息的功能。用户界面如图497所示,数据库为图4-96所示。
4-97 学生基本信息应用程序界面图




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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
.NET数据库编程求索之路--6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(2)
6.使用ADO.NET实现(三层架构篇-使用List传递数据-基于存储过程)(2)      【 夏春涛 email: xchuntao@163.com  blog: http://www.cnblogs.
802 0
jpa @onetomany 级联查询时会有重复数据,去重问题
自己是直接查出来然后利用set去重(自己感觉不是太好,不过能达到目的) List list = query.getResultList();Set set=new HashSet(list);如有更好的方法,希望大佬留言,谢谢
1789 0
.NET数据库编程求索之路--7.使用ADO.NET实现(工厂模式-实现多数据库切换)(4)
7.使用ADO.NET实现(工厂模式-实现多数据库切换)(4) 7.7 业务逻辑层HomeShop.BLL OrderBiz.cs View Code  1 using System; 2 using System.
801 0
大神手把手教你:(Python)序列数据的One Hot编码
不懂One Hot编码?让大神手把手教你(文中代码可以直接运行),用小例子清晰明了的带你进入One hot 编码!
5051 0
多地iPhone用户遭盗刷 企业数据泄露的结无解?
对于企业来说,大数据在如今已经是必不可少的一项技术。不管是大型科技互联网公司,还是线下消费实体店,社会各行各业都已进入大数据时代。 然而就在大数据快速发展的这几年,国内外涉及数据安全与个人隐私的舆情事件不断发生,涉及人们衣食住行的隐私泄露案频出。
1240 0
阿里首次披露中台战略:OneData的统一数据标准和实时数据分析是核心
近日,阿里巴巴公共数据平台负责人罗金鹏首次对外披露了在阿里中台战略下,如何推动数据中台落地的个中细节,其中OneData的统一数据标准和实时数据分析是核心。
21120 0
+关注
20377
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载