数据库应用程序的可视化设计

学习目标:

  1. C#数据库应用程序的开发环境的构成
  2. 服务器资源管理器
  3. 类型化数据集
  4. 创建简单的数据库应用程序
  5. 水晶报表

Notes:

类型化数据集

利用服务器资源管理器建立数据连接
利用服务器资源管理器可执行的任务如下:
1)打开数据连接。
2)登录到服务器上,并显示服务器的数据库和系统服务,包括事件日志、消息队列、性能计数器、系统服务和SQL数据库。
3)查看关于可用Web服务的信息以及使信息可用的方法和架构。
4)生成到SQL Server和其他数据库的数据连接。
5)存储数据库项目和引用。
6)将节点从服务器资源管理器中拖到 Visual Studio .NET 项目中,从而创建引用数据资源或监视其活动的数据组件。
7)通过对这些在 Visual Studio .NET 项目中创建的数据组件编程来与数据资源进行交互。

直观的说
1)首先,在数据库Sql server2019中新建一个数据库eg:students;

接着,右击students,任务,数据导入(操作并导入相应数据文件个eg:systudenfs);

2)打开VS2013,
首先,启动服务器资源管理器(执行菜单命令“视图”→“服务器资源管理器”,即可进入服务器资源管理器);

第二,建立数据库连接(在“数据连接”上右击弹出快捷菜单,选择“添加连接”命令);

第三,类型化数据集的创建(新建一个“Windows应用程序”,然后在创建的项目上右击,在弹出的快捷菜单上选择“添加”→“新建项”命令,“模板”选择“数据集”);

第四,对已创建的数据集,单击“添加”按钮后即进入数据集窗口,从服务器资源管理器中选择一个数据连接,然后将该数据连接中的表拖曳到数据集设计界面,经过编译就建立了一个类型化数据集。在这里插入图片描述

第五,类型化数据集的参数化查询,每个表适配器都有一个默认的Fill方法,称为主Fill方法,也称为主查询,它定义了表的架构。
在这里插入图片描述
1)修改主查询:右击相应的表适配器,在弹出的快捷菜单中选择“配置”命令,修改相应的SQL语句,单击“完成”按钮。
2)创建新查询:右击相应的表适配器,选择“添加查询”命令,按默认向导进入使用SQL语句编辑窗口(见图5-19),并编写SQL语句,单击“下一步”按钮,将“方法名”改为“FillByDeptID”即可。
在这里插入图片描述
EG:

创建学生档案管理系统的类型化数据集
1.创建数据集DsStudentSys.xsd
选择学生档案管理系统项目,右击选择快捷菜单中的“添加”→“新建项”,在设计界面中选择“模板”为“数据集”,“名称”为“DsStudentSys.xsd”,单击“添加”按钮。
2.为数据集添加表对象tblDept、tblClass、tblStudent
打开服务器资源管理器中的数据连接,依次将tblDept、tblClass、tblStudent 3张表拖曳至数据集设计界面,为项目创建类型化数据集,参见图5-18所示。
3.为表适配器tblClassTableAdapter添加参数化查询
为表适配器添加参数化查询,根据系部编码得到班级信息,方法名为“FillByDeptID”,语句为:
SELECT * FROM tblClass WHERE (Class_DeptID like ?)
4.修改表适配器tblStudentTableAdapter的主查询,并添加参数化查询
1)修改主查询:由于经常需要查看指定班级的学生信息,因此需要修改主查询,根据班级编码查询学生信息。右击主查询,选择“配置”命令,打开“TableAdapter查询配置向导”对话框,修改SQL语句如下。
SELECT *
FROM tblStudent, tblSex, tblNation, tblNtvPlc, tblParty, tblClass
WHERE tblStudent.Stu_Sex = tblSex.Sex_ID
AND tblStudent.Stu_Nation = tblNation.Nation_ID
AND tblStudent.Stu_NtvPlc = tblNtvPlc.NtvPlc_ID
AND tblStudent.Stu_Party = tblParty.Party_ID
AND tblStudent.Stu_Class = tblClass.Class_ID
AND tblStudent.Stu_Class = ?
2)添加新查询:在学生档案查询中,有时需要对学生姓名、学号、性别进行模糊查询,因此需要添加新查询以适合系统需求。新建查询(方法名为“FillByNameNoSex”):右击表适配器,在弹出的快捷菜单中选择“添加查询”命令,进入“TableAdapter查询配置向导”对话框,新建查询,相应SQL语句如下。
SELECT *
FROM tblStudent, tblSex, tblNation, tblNtvPlc, tblParty, tblClass
WHERE tblStudent.Stu_Sex = tblSex.Sex_ID
AND tblStudent.Stu_Nation = tblNation.Nation_ID
AND tblStudent.Stu_NtvPlc = tblNtvPlc.NtvPlc_ID
AND tblStudent.Stu_Party = tblParty.Party_ID
AND tblStudent.Stu_Class = tblClass.Class_ID
AND (tblStudent.Stu_Name like ? +’%’ )
AND (tblStudent.Stu_No like ? +’%’ )
AND (tblSex.Sex_Name = ? )

数据库应用程序的结构与设计步骤

数据库应用程序结构
数据库应用程序由数据访问窗体控件、数据源控件和ADO.NET数据访问对象组成。
1.数据访问窗体控件
典型数据访问窗体控件有DataGridView,此外在第2章中介绍的许多控件(如TextBox、Label、ComboBox、ListBox等)也可以设置数据源关联到数据表的字段,充当数据访问窗体控件。
2.数据源控件
数据源控件是数据界面控件从数据表获取数据的通道,包括DataSet控件和BindingSource控件
3.ADO.NET对象

在这里插入图片描述

数据库应用程序的设计步骤
1.创建解决方案的项目
2.添加Windows窗体
3.设计用户界面
4.创建事件处理程序和编译、调试、运行程序

数据源控件与数据访问窗体控件

1) BindingSource控件
1.BindingSource控件的作用
用于简化将控件绑定到基础数据源的过程,可以看作是窗体上的控件到数据的一个间接层。
2.BindingSource 控件的常用属性
1)Count:获取基础列表中的总项数。
2)Current:获取数据源的当前项。
3)Position:获取或设置基础列表中的当前位置。
4)List:获取 DataSource 和 DataMember 计算列表。
5)DataSource:获取或设置连接器绑定到的数据源,可以是数组、列表、数据集、数据表等。
6)DataMember:设置用于筛选查看哪些数据表的表达式。(即表示对应DateSet的哪一个或些表)
7)Sort:如果数据源为 IBindingList,则获取或设置用于排序和排序顺序信息的列名。如果数据源为 IBindingListView,并支持高级排序,则获取用于排序和排序顺序信息的多个列名。
8)Filter:如果数据源是 IBindingListView,则会获取或设置用于过滤所查看行的表达式。
3.BindingSource 控件的常用方法
1)RemoveCurrent方法:从列表中移除当前项。
2)EndEdit方法:将挂起的更改应用于基础数据源。
3)CancelEdit方法:取消当前的编辑操作。
4)Add方法:将现有项添加到内部列表中。
5)AddNew方法:向基础列表添加新项。
6)Insert方法:将一项插入列表中指定的索引处。
7)MoveFirst方法:移至列表中的第一项。
8)MoveLast方法:移至列表中的最后一项。
9)MoveNextv方法:移至列表中的下一项。
10)MovePrevious方法:移至列表中的上一项。

2)BindingNavigator控件
1.BindingNavigator控件的作用
是一个数据记录导航控件,创建了一些标准化方法供用户搜索和更改 Windows 窗体中的数据,与 BindingSource 控件一起使用可以在窗体的数据记录之间移动并与这些记录进行交互
在这里插入图片描述
2.BindingNavigator 控件包含的工具项
在这里插入图片描述
3.常用属性
BindingSource属性:为BindingNavigator控件绑定数据源

2)Label控件
1.作用
Label控件用于显示数据表中当前记录中的字段值。
2.绑定属性
DataBindings属性用于绑定数据源
Text子属性用于选择数据源及字段

3)TextBox控件
1.作用
TextBox控件用于显示及编辑数据表中当前记录中的字段值。
2.绑定属性
DataBindings属性用于绑定数据源。
Text子属性用于选择数据源及字段

4)ListBox控件
1.作用
作用1:用列表方式显示数据表中某字段值。
作用2:通过连接字段的绑定,使主表(如tblClass)与代码表(如tblStatus)建立连接。
2.属性
1)DataSource:选择代码表数据源绑定控件。
2)DisplayMember:选择代码表中汉字字段。显示出来是用哪个字段
3)ValueMember:选择代码表中连接字段。–数据表中真实的字段值
4)DataBinding.SelectValue:选择主表中连接字段。

5)ComboBox控件
1.作用
作用1:用下拉列表方式显示数据表中某字段值。
作用2:通过连接字段的绑定,使主表(如tblClass)与代码表(如tblDept)建立连接。
2.属性
1)DataSource:选择代码表数据源绑定控件。
2)DisplayMember:选择代码表中汉字字段。
3)ValueMember:选择代码表中连接字段。
4)DataBinding.SelectValue:选择主表中连接字段。
在这里插入图片描述
6)DataGridView 控件
DataGridView 控件提供一种强大而灵活的以表格形式显示数据的方式。用户可以使用 DataGridView 控件来显示少量数据的只读视图,也可以对其进行缩放以显示特大数据集的可编辑视图。
1.DataGridView的数据绑定
设置 DataSource 属性可以将数据绑定DataGridView 控件。
注:
1,界面操作
2,代码:dataGridView1.DataSource =tblclassBindingSource1
//一般会自动绑定,不用写;
2.DataGridView的行集合Rows
1)Count属性: 返回数据表控件中记录行数。
格式: <DataGridView控件>.Rows.Count

textBox3.Text = dataGridView1.Rows.Count.ToString();//所有行数量

2)Cell[j]属性:表示记录(行)中第j个字段(单元格)。
格式: <DataGridView控件>.Rows[i].Cells[j].Value
表示数据表中第i条记录(行)第j个字段(列)的值。

textBox4.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();//当前Cells[2]的值是。。

3)Clear属性:清除记录行的所有记录。
格式: <DataGridView控件>.Rows .Clear()
4)Add方法:向数据表控件添加记录行。
格式: <DataGridView控件>.Rows.Add(n)
其中:n表示添加的记录行数。
在这里插入图片描述
3.DataGridView的当前行CurrentRow
CurrentRow属性用于获取包含DataGridView控件当前的行,使用方式如下。
格式: <DataGridView控件>.CurrentRow
4.DataGridView控件的设计器
单击DataGridView控件右上角的智能标记标志符号,出现设计器。
5.DataGridView列的编辑
单击DataGridView控件的设计器中“编辑列”选项,或者在DataGridView控件的“属性”面板中单击Columns属性右侧的省略按钮,即可进入“编辑列”对话框。
(1)添加与删除字段
在“编辑列”对话框左侧显示数据表字段名,用“添加”与“移除”按钮可添加或删除字段。
(2)改变字段位置
单击“改变字段位置”按钮,可改变字段在数据表控件中的位置顺序。
(3)设置字段属性
在“编辑列”对话框右侧为每个字段的属性编辑器。字段属性分为布局、设计、数据、外观、行为5项。
1)布局。
AutoSizeMode:自动调节字段宽度。
DividerWidth:列分隔线宽度。
MinimumWidth:列最小宽度,如设置最小列宽为5。
Width:当前字段宽度。
2)设计。
① Name:字段名。
② ColumnType:用于选择列的类型,有如下类型。
 DataGridViewTextBoxColumn:文本。
 DataGridViewButtonColumn:按钮。
 DataGridViewCheckBoxColumn:复选。
 DataGridViewComboBoxColumn:下拉列表。
 DataGridViewImageColumn:图像。
 DataGridViewLinkColumn:链接。
3)数据
DataPropertyName:绑定到数据表的字段名。
4)外观
DefaultCellStyle:设置字段,默认单元格样式。单击该属性右侧的按钮 ,进入如图5-26所示的“CellStyle(单元格类型)生成器”对话框,可设置单元格的对齐方式、背景色、前景色等。
HeaderText:设置字段标题。
Visible:True显示字段,False隐藏字段。
在这里插入图片描述
5)行为
ReadOnly:True表示字段只读,False表示字段可读写。
Resizeable:True表示字段宽度可变,False表示字段宽度不能改变。

6.DataGridView行的编辑
(1)允许记录的增、删、改
单击DataGridView控件右上角的小三角按钮,打开“DataGridView任务”面板,使“启用添加”“启用删除”“启用编辑”复选框为选中状态,则DataGridView控件允许对记录行进行增、删、改的操作。
(2)禁止记录的增、删、改
取消“启用添加”“启用删除”“启用编辑”复选框选中状态,则DataGridView控件禁止对记录行进行增、删、改的操作。
(3)设计记录样式
1)RowsDefaultCellStyle属性:设置记录行的显示样式。
记录行的显示样式是通过单元格的外观设置实现的,所以其编辑界面与“CellStyle生成器”界面相同,参见图5-26。
2)AlternatingRowsDefaultCellStyle 属性:设置记录行的交替显示效果。
表格数据通常以类似账目的格式显示,其中各交替行的背景颜色不同,可通过设置AlternatingRowsDefaultCellStyle 属性实现交替行显示的效果。设置方法与RowsDefaultCellStyle属性相同。

///单元格单击事件,获取当前选择的单元格的值--以下有3种方法
 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            textBox5.Text = dataGridView1.Rows.Count.ToString();//当前单元格的值
            textBox5.Text = dataGridView1.SelectedCells[0].Value.ToString();//被选择的单元格数组的第一个的值
             textBox5.Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();//利用下标返回值
        }
///单元格内容点击事件--以下有3种方法
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        textBox5.Text = dataGridView1.Rows.Count.ToString();//当前单元格的值
            textBox5.Text = dataGridView1.SelectedCells[0].Value.ToString();//被选择的单元格数组的第一个的值
             textBox5.Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();//利用下标返回值
        }

在这里插入图片描述

/*将TextBox控件和DataGridView控件绑定到BindingSource控件,为BindingNavigator控件添加“加载”“保存”和“取消”按钮,实现加载、保存记录和取消操作的功能。
“加载”“保存”和“取消”按钮添加事件代码分别如下:(窗体运行结果如图5-22所示)*/
private void tsLoad_Click(object sender, EventArgs e)
{    this.tblClassTableAdapter.Fill(this.class_DataSet.tblClass);
//this.数据调用.Fill(this.dataSet数据集.表集合);
}
private void tsSave_Click(object sender, EventArgs e)
{    this.tblClassTableAdapter.Update(this.class_DataSet.tblClass);
//this.数据调用.Fill(this.dataSet数据集.表集合);
}
private void tsCancel_Click(object sender, EventArgs e)
{    bindingSource1.CancelEdit();
//this.数据调用.Fill(this.dataSet数据集.表集合);
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_45954947/article/details/105567159