当前位置:文档之家› 基于C#窗体的数据库应用系统

基于C#窗体的数据库应用系统


2.2 集合
1. 仅提供枚举功能的低级集合接口,如IEnumerable和 IEnumerable<T>; 2. 提供大小、枚举和同步操作的集合接口ICollection和提 供大小、枚举、添加元素和移除元素等操作的泛型集 合接口ICollection<T>; 3. 提供可按照索引访问元素的高级集合接口,如IList和 IList<T>; 4. 提供专用功能的字典集合接口,如IDictionary和 IDictionary<TKey, TValue>等; 5. 提供通用功能的集合类,如ArrayList和List<T>; 6. 提供专用功能的集合类,如Hashtable、Queue、Stack、 Dictionary<TKey, TValue>、Queue<T>和Stack<T>等。
4. 数据库
说明: ①设计表TempResult的目的是为了网格录入中学生名称列显示的方 便,另外对于更复杂的成绩管理系统设计此表可提高编程方便性和 运行效率 ②在Teach表中增加state是为了控制成绩录入过程
2.1 可枚举类型
• 实现了接口IEnumerable或泛型接口 IEnumerable<T>的类型是可枚举类型 • 如果一个类定义了GetEnumerator()方法,其对象 可作为foreach in和LINQ中的from in表达式
+Tables +Item
DataTable +NewRow() +Clear() +ReadXml() +ReadXmlSchema() +WriteXml() +WriteXmlSchema() +Merge() +GetChanges() +AcceptChanges() +RejectChanges()
BindingSource类对象
• BindingSource 组件有多种用途。 它在 Windows 窗体控件 与数据源之间提供流通管理 [CurrencyManager]、更改通知 和其他服务,简化了窗体上的控件到数据源的绑定。通过 它的 DataSource 属性将 BindingSource 组件关联到数据源。
public interface IEnumerator { object Current {get;} bool MoveNext(); void Reset(); } public interface IDisposable { void Dispose(); } public interface IEnumerator<T>:IEnumerator, IDisposable { T Current {get;} }
System.Data.SqlClient
*Connection *Command
System.Data.OracleClient System.Data.OleDb System.Data.Odbc

通 过 适 配 器 访 问 数 据 库 使 用 的 对 象 关 系 图
+Parameters
DbParameterCollection +Add() +IndexOf() +Remove() +RemoveAt()
4 数据集及作用

• •


System.Data 命名空间提供 体系结构中内 存数据库访问功能的类。 DataSet对象,简单说是一个轻量级的内存数据库。 DataSet主要相关类型DataTable、DataRow、 DataColumn、DataRelation 及对应的集合类 (*Collection),Constraint及子类(UniqueConstraint 、 ForeignKeyConstraint)和ConstraintCollection,等等。 类型化数据集与非类型化数据集。
public interface IEnumerable { IEnumerator GetEnumerator(); } public interface IEnumerable<T>: IEnumerable { IEnumerator<T> GetEnumerator(); }
• 枚举器实现接口IEnumerator或泛型接口 IEnumerator<T>
基于C#窗体的数据库应用系统 开发基础与方法
(4课时)

1. 2. 3. 4. 5. 6. 7. 8.

简易成绩管理系统介绍及需求分析 可枚举类型与集合 绑定及作用 数据集及作用 适配器及作用 应用系统体系结构 LINQ, LINQ to SQL, Entity Framework 系统框架实现(实例)
1 简易成绩管理系统介绍及需求分析
• 本需求分析方法、步骤适用管理信息系统
1.调研系统应用环境 模拟成绩管理; 课程如‘1年级1学期语文’标识,一门 课程可分多个教学班级,每个班级有唯一 的一个任课老师; 局域网内运行。
2.获取成绩管理业务工作的工人[可能成为未 来系统的参与者(一个系统用户可以执行 多个参与者的操作)]及工作内容 1)成绩管理员: 课程管理、教学班安排、学 生管理、老师管理、成绩修改、打印成绩 表等 2)任课教师: 班级成绩登记、打印成绩登记 表等 3)学生: 查询本人成绩等
3.从参与者获取处理数据资料 1)成绩管理员: 课程信息、班级信息、老师信息、 学生信息、成绩信息等 2)任课教师: 相关班级成绩信息等 3)学生: 本人成绩信息等 作为教学案例,简化系统: 1)老师指任课老师和管理员,用角色区分,并作为系 统用户。 2)成绩登记过程分两步:①录入-暂存(*);②提交。 因此,成绩信息包括暂存成绩和确定成绩。 3)学生不作为系统用户。
BindingSamples/ListBinding: private BindingSource bs; private void Form1_Load(object sender, EventArgs e) { //设计时bs的DataSource成员为typeof(Person),即为类型信息 bs=new BindingSource(ponents); List<Person> list = new List<Person>(); list.Add(new Person("12345", "LY", true)); list.Add(new Person("67890", "ZHI", false)); bs.DataSource = list; idTextBox.DataBindings.Add(new Binding("Text", bs, "ID", true)); nameTextBox.DataBindings.Add(new Binding("Text", bs, "Name", true)); sexCheckBox.DataBindings.Add(new Binding("CheckState", bs, "Sex", true)); }
3 绑定及作用
• 数据绑定,即建立控件属性与对象属性 (或对象列表中当前对象属性)之间关系, 以实现数据同步。
WriteValue
控件属性
Binding类对象
对象属性或 对 象 列 表 [IList] 当 前对象属性 [get,set]
(V)
(C) (M)
ReadValue
绑定例子
BindingSamples/BasicBinding: //定义参与绑定的(数据源:如Form)对象属性: Title private string title; public string Title { get { return title; } set { title = value; } } private void Form1_Load(object sender, EventArgs e) { //将控件的Text属性绑定到对象的Title属性 Binding textBinding = new Binding("Text", this, "Title",false); textBox1.DataBindings.Add(textBinding); }
ConstraintCollection +Count +Add() +IndexOf() +CanRemove() +Remove() +RemoveAt()
Constraint
UniqueConstraint
1
+Columns
DataColumnCollection +Count +Add() +IndexOf() +CanRemove() +Remove() +RemoveAt()
DataTableCollection +Count : int +Add() +IndexOf() +CanRemove() +Remove() +RemoveAt() DataRowCollection +Count +Add() +IndexOf() +CanRemove() +Remove() +RemoveAt() * +Item 1 +Rows
ReslutMan\ReslutMan: public static void DisplayStudent() { SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Student", ResultDb.GetConnection()); DataSet ds = new DataSet(); ad.Fill(ds, "Student"); { BindingSource bs = new BindingSource(); bs.DataSource = ds; bs.DataMember="Student"; dataGridView1.DataSource = bs; } //或直接 { dataGridView1.DataSource = ds; dataGridView1.DataMember="Student"; } }
相关主题