(3)完善程序界面和代码
通过使用数据源配置向导和TableAdapter配置向导,创建的SQL Server数据库应用程序已具有了要求的功能。但为了使程序更加美观、更加人性化还需要进行一些简单的完善。设计界面如图所示:
界面设计视图
表可以采用两种方式进行显示:DataGridView和详细信息。如采用详细信息方式时,列的显示方式就有多种选择,如TextBox、Label、ComboBox等。 解决方案:
(1)创建一个名为“ConnectExam”的基于Windows的应用程序。 (2)添加数据源。 (3)配置TableAdapter。 (4)设计界面。 (5)完善代码。
用户单击保存按钮时执行的事件过程代码修改如下:
private void studentBindingNavigatorSaveItem_Click(object sender, EventArgs e) { this.Validate(); this.studentBindingSource.EndEdit(); this.studentTableAdapter.Update(this.connectExampleDataSet.student); // 下列语句行用于显示提示信息,需要手工添加 MessageBox.Show(\更新成功!\系统提示\ MessageBoxIcon.Information); } 添加用户关闭窗体时执行的事件过程代码如下:
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { // 声明变量用于存放信息框返回结果 DialogResult result; // 用HasChanges()方法判断数据集是否已被修改 if (connectExampleDataSet.HasChanges()) { // 若数据集已被修改则显示信息框提示用户 result = MessageBox.Show(\数据已被修改,是否保存? \系统提示\ MessageBoxButtons.YesNo, MessageBoxIcon.Information); // 若用户单击了信息框中的【是】按钮 if (result == DialogResult.Yes) { this.Validate(); this.studentBindingSource.EndEdit(); this.studentTableAdapter.Update(connectExampleDataSet.student); } } } 指导教师检查学生进度
练习2:在SQL Server数据库中存储图像
问题
在SQL Server数据库中存储图像。 指导教师讲解问题说明
数据库test.mdf的test表包含pic字段,其数据类型为image,是一幅图像,本例将pic字段绑定到pictureBox控件。 分析
设为自动增量字段,设为主键。创建字段“pic”,image类型,允许为空。 指导教师分析解题思路 解决方案:
(1)建立一个新项目。放PictureBox控件到窗体。
(2)单击菜单“数据(A)|添加新数据源(N)?”,打开“数据源配置向导”对话框,连接数据库Test.mdf。
(3)在PictureBox控件属性DataBindings.Image后的下拉列表中将看到pic字段,选中pic字段将PictureBox控件绑定到pic字段。
(4)放BindingNavigator控件到窗体,修改该控件BindingSource属性为testBindingSource。
(5)放Button和OpenFileDialog控件到窗体,Button控件的标题为\增加或修改图像\,按钮单击事件处理函数如下:
private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { Bitmap bits=null; bits = new Bitmap(openFileDialog1.FileName);//建立指定文件的新位图对象 pictureBox1.Image = bits; } } 创建数据库Test.mdf,创建Test表,包含字段“ID”,int类型;(是标志)=是;标志增量=1;标志种子=1,即将字段“ID”
(6)放Button控件到窗体,标题为\保存图像到数据库\,单击事件处理函数如下:
private void button2_Click(object sender, EventArgs e) { if (this.testDataSet.HasChanges())//如果DataSet中数据被修改 this.testTableAdapter.Update(this.testDataSet);//更新数据库 }//集中调试环境中不能保存所作的修改,脱离集中调试环境运行可以保存所作的修改。 (7)程序界面如图所示:
程序设计界面
(8)编译运行,单击BindingNavigator控件标题为\按钮,为Test表增加一个记录,单击\增加或修改图像\按钮,可以为该记录增加图像。也可为当前记录修改图像。
第二部分 练习(30分钟)
使用SqlDataReader类读出数据,用ListView控件显示。
运行效果图
提示:
增加语句using System.Data.SqlClient;
放置视图控件ListView到窗体,属性View=Detail。单击属性Column右侧标题为“?”的按钮,在弹出的“ColumnHeaderconn;SqlCommand da;SqlDataReader dr。 指导教师检查学生进度 指导教师检查学生代码规范性
集合编辑器”对话框中添加3个列头,属性Text分别为:学生学号、学生姓名、学生性别。为Form1类增加变量:SqlConnection
第三部分 作业
指导教师布置作业
为学生数据库增加一个查询男生或女生的存储过程,并设计应用程序使用该存储过程。 提示:
存储过程语句如下:
ALTER PROCEDURE SelectManStudent(@Sex nchar(1)) AS
SELECT StudentNum,StudentName,StudentSex FROM Student WHERE(StudentSex=@Sex) RETURN
8、C#高级编程
目标
? ? ? ?
单一继承 抽象类和抽象方法
使用委托和事件实现模拟闹铃。 飞机和客机类的多态程序
第一部分 指导(50分钟)
练习1:单一继承
问题
现实生活中,哺乳动物是动物界中一个分支;可以动物普遍具有的特征都可以在哺乳动物身上找到;但哺乳动物也有自己独指导教师讲解问题说明
用C#编写一个程序,使用Animal和Mammal两个类来说明一般动物和哺乳动物的继承关系。Animal具有名称、所属门类等属性,需要提供方法实现以接收和显示这些属性的值。
Mammal类具有代表哺乳动物习性的属性,这些属性表明哺乳动物与其他类型动物的区别。同样地,需要提供方法实现以接收和显示这些属性的值。
特的习性。因此可以将动物看成是哺乳动物的父亲。编程实现上可以通过哺乳动物类继承一般动物类,从而获得一般动物的特征。
分析
Animal类是一个基类,它包含_name、_type两个成员以及用于接收和显示信息的三个方法。名为Mammal的派生类包含_temperature、_isViviparous两个成员和用于接收和显示信息的两个方法。
为了检验创建的Animal和Mammal类,应实例化一个Mammal类对象,并调用基类和派生类的方法来存储和检索值。 推荐步骤:
(1)新建一个名为“SingleInher”的基于控制台应用程序的项目。 (2)将以下代码添加到“Program.cs”中。
using System; using System.Collections.Generic; using System.Text; namespace SingleInher { //一般动物类 class Animal { protected string _name; //动物名称 protected string _type; //动物所属门类 //接收名称和门类 public void AcceptDetails() { Console.WriteLine(\请输入动物名称:\ this._name = Console.ReadLine(); Console.WriteLine(\请输入所属门类:\ this._type = Console.ReadLine(); } //显示动物的名称和所属门类 public void DisplayDetails() { Console.WriteLine(); Console.WriteLine(\动物的详细信息如下:\ Console.WriteLine(\姓名:{0}\ Console.WriteLine(\门类:{0}\ } } //哺乳动物类,继承一般动物类 class Mammal : Animal { private double _temperature; //恒定温度值 private string _isViviparous; //是否为胎生 //接收哺乳动物的特征信息 public void AcceptCharacter() { Console.WriteLine(\请输入哺乳动物的恒定温度:\