软件开发实例
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.NET数据库访问技术 应用开发实例
学生管理
ADO.NET是微软的数据访问框架的最新产 物,它是.NET框架的一部分,它是在.NET 代码中访问数据库的最好工具。
ADO.NET的四类数据提供程序
SQL Server .NET
提供对Microsoft SQL Server 数据访问。 使用System.Data.SqlClient命名空间
适用于使用OLE DB公开的数据源。 使用System.Data.OleDb命名空间
OLE DB .NET
ODBC .NET
适用于使用ODBC公开的数据源。 使用System.Data.Odbc命名空间
适用于Oracle 数据源。 OLE DB.NET 使用System.Data.OracleClient命名空间 访问数据库
DbConnection类定义
关于DbConnection类的配置文件.xml
在DbConnection对象定义中,连接字符串conStr中参数‚数 据库名‛和‚服务器名‛取值来自于我们为该项目创建的 xml配置文件。 可将该配置文件保存在项目Ntier所在目录的bin\debug\文件 夹中,xml配置文件的文件名与项目名相同,扩展名为.xml。
Leabharlann Baidu
注意嵌入式 SQL语句写 private void button1_Click(object sender, System.EventArgs e) { 法
string sql=“insert into Orders(CustomerID,OrderDate) values(„”; sql+=textBox1.Text + ” ‟,‟ ” + textBox2.Text + “‟)”; OleDbCommand cmd=new OleDbCommand(sql,conn); try { conn.Open(); cmd.ExecuteNonQuery(); MessageBox.Show("成功插入一条记录!"); conn.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message);
private void Form1_Load(object sender, System.EventArgs e) { string sql="select OrderID, CustomerID from dbo.Orders;"; OleDbCommand cmd=new OleDbCommand(sql,conn); conn.Open(); OleDbDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { ListViewItem li=new ListViewItem(); li.SubItems.Clear(); li.SubItems[0].Text=reader[0].ToString(); li.SubItems.Add(reader["CustomerID"].ToString()); listView1.Items.Add(li); } reader.Close(); conn.Close(); }
接 上 XmlNode root = doc.DocumentElement; XmlNode setttingNode = root.SelectSingleNode("setting"); string server = setttingNode.SelectSingleNode("server").InnerText; string db = setttingNode.SelectSingleNode("db").InnerText string conStr = "Provider=SQLOLEDB.1;"; // 创建ADO连接字符串 conStr += "Integrated Security=SSPI;"; conStr += "Initial Catalog=" + db + ";Data Source=" + server; conn.ConnectionString = conStr; } } }
class Student:DbConnection { 引用部分加入如下代码: private string no, name, sex, birthday, deptId; public Student(string no, string name, string sex, string birthday, string deptId) { this.no = no; this.name = name; this.sex = sex; this.birthday = birthday; this.deptId = deptId; } public bool save() //将输入的学生信息保存到数据库中 { //ToDo } //------getDeptList方法:从Department数据表中搜索所有院系信息列表保存在数组中 public static void getDeptList(out DataTable deptId,out DataTable deptName) { //ToDo } //------loadAllStudent方法:模糊查询满足条件的学生信息,并返回到listViewK控件中 public static void loadAllStudent(ListView lv, string no, string name) {//ToDo } public void loadSelectedCourse(ListView lv) //查询当前学生已选课程列表 {//ToDo } public void loadUnselectedCourse(ListView lv) //查询当前学生待选课信息 {//ToDo } //--------FillDataTableStudent方法:从表Student中读出数据,填入DataTable变量dt中 public static void FillDataTableStudent(out DataTable dt, out OleDbDataAdapter adapter) {//ToDo } }
OleDbConnection对象连接参数
属性
Provider Data Source
说明
指定OLEDB Provider 指定数据库服务器名称或位置
Initial Catalog
Intigrated Secuity
指定数据库名
SSPI
建立连接后,可以通过OleDbCommand对象执行 SQL命令,从数据源(如SQL Server)中返回结 果。 创建OleDbCommand对象时,需指定一个将 在数据源上执行的嵌入式SQL语句和Connection 对象。
<?xml version="1.0" encoding="UTF-8" ?> - <appConfig> - <setting> <server>WORKGROU-63F42D</server> <db>NTierStudent</db> </setting> </appConfig>
(4)在StudentManager目录下创建实体类Student
}
}
1.
系统的需求 选课系统有两类参与者:教务员和学生
教务员:
─ ─ ─ ─
可以输入一个新学生;更新、查询学生的信息。 可以输入一门新课程;更新、查询课程的信息。 可为指定教师开一门课程;查询已开课程的选课学生 名单。 可为指定的学生选课;输入学生成绩。
学生:
可以查询自己所有的选课信息,包括:自己的已选课 列表和待选课列表; ─ 可以选课。 ─ 可以输入自己对某门课程任课教师的评价。
─
2.
系统模块划分
3.
开发过程(以学生管理为例)
分析: ① 从系统模块划分的角度看,解决该问题需要一个主窗体和 三个子窗体。在主窗体的子菜单中完成对各子窗体的调用。 其中:
主窗体(Form1)包括一个主菜单和若干子菜单 输入子窗体(InputStudentForm)实现学生信息输入 查询子窗体(SearchStudentForm)实现学生选课查询 更新子窗体(UpdateStudentForm)实现学生信息的更新、删除
string sql="select count(*) as 订单数 from dbo.Orders;";
OleDbCommand cmd=new OleDbCommand(sql,conn);
执行方式
执行结果
用于执行嵌入式select的OleDbCommand ExecuteReader 命令,返回结果为一个数据流,即生成一 个OleDbDataReader对象。 执行查询,并返回查询的结果集中第一行 ExecuteScalar 的第一列,即只返回一个单值。 用于非select的OleDbCommand命令执行, ExecuteNonQuery 如 insert, delete, update 命令,直接更改 数据库中的数据。
②
从软件体系结构的角度看,学生管理程序可分三层部署。 具体如下:
数据存储层:创建学生管理所需数据库NTierStudent,并将其部署 在SQL Server2005数据库服务器端。 数据访问层:是客户端应用程序的重要组成成份之一。实现数据库 连接和访问功能。因此,要设计
─ ─
一个数据链接类DbConnection类:实现对服务器端数据库(如 NTierStudent) 的连接功能。 一个实体类Student类:实现对NTierSTUDENT库中学生信息的输入、查询、 更新与删除功能,其中学生信息输入、查询、更新与删除将以该类方法的 形式出现。 InputStudentForm、SearchStudentForm、 UpdateStudentForm三个窗体类。
ExecuteScalar()
DataReader
应用程序
1.
创建OleDbConnection对象 构造嵌入式SQL语句 创建OleDbCommand对象 执行SQL语句
2.
3.
4.
windows验证方式:
OleDbConnection conn = new OleDbConnection(); string conStr="Provider=SQLOLEDB.1; Data Source=jd228; Initial Catalog=NTierStudent; Integrated Security =SSPI; "; conn. ConnectionString=conStr;
输入项目名称NTier
在NTier下,创建CourseManager、StudentManager、 TeacherManager、UserManager四个文件夹。具体做法:
在解决方案资源管理器的树形目录中,右击NTier节点, 在弹出的快捷菜单中选择‚添加‛|‚新建文件夹‛命令。
(2)创建主窗口界面(Form1)
拖入 窗体
(3)在Ntier下创建数据连接类 DbConnection
using System; using System.Collections.Generic; using System.Text; using System.Data.OleDb; using System.Xml; using System.Windows.Forms; namespace NTier { class DbConnection { protected static OleDbConnection conn = new OleDbConnection(); static DbConnection() { string s = Application.ExecutablePath;//获得完整的应用程序的路径 int dotPos = s.IndexOf("."); s = s.Substring(0, dotPos); s += ".xml";// 将后缀名从exe改成xml XmlDocument doc = new XmlDocument(); doc.Load(s); 见 下
本课程将采用
Oracle .NET
Ole Db.NET 的类在System.Data.OleDb命名空间 中。 若访问的是OleDb数据库系统,应在程序顶部 引用部分增加如下引用语句:
using System.Data.OleDb
数据库
OleDbConnection
OleDbCommand ExecuteNonQuery() ExecuteReader() OleDbDataAdapter OleDbDataSet
数据表示层:即界面表达,是客户端应用程序的重要组成部分。
─
(1)创建项目NTier
选择菜单‚开始‛|‚ 所有程序‛|‚ Microsoft Visual Studio 2005‛|‚ Microsoft Visual Studio 2005‛,进入‚起始页-Microsoft Visual Studio‛。 在菜单栏中选择‚文件‛|‚新建‛|‚项目‛,打开【新建项 目】对话框,在此对话框中选择项目类型为Visuanl C# | Windows。
学生管理
ADO.NET是微软的数据访问框架的最新产 物,它是.NET框架的一部分,它是在.NET 代码中访问数据库的最好工具。
ADO.NET的四类数据提供程序
SQL Server .NET
提供对Microsoft SQL Server 数据访问。 使用System.Data.SqlClient命名空间
适用于使用OLE DB公开的数据源。 使用System.Data.OleDb命名空间
OLE DB .NET
ODBC .NET
适用于使用ODBC公开的数据源。 使用System.Data.Odbc命名空间
适用于Oracle 数据源。 OLE DB.NET 使用System.Data.OracleClient命名空间 访问数据库
DbConnection类定义
关于DbConnection类的配置文件.xml
在DbConnection对象定义中,连接字符串conStr中参数‚数 据库名‛和‚服务器名‛取值来自于我们为该项目创建的 xml配置文件。 可将该配置文件保存在项目Ntier所在目录的bin\debug\文件 夹中,xml配置文件的文件名与项目名相同,扩展名为.xml。
Leabharlann Baidu
注意嵌入式 SQL语句写 private void button1_Click(object sender, System.EventArgs e) { 法
string sql=“insert into Orders(CustomerID,OrderDate) values(„”; sql+=textBox1.Text + ” ‟,‟ ” + textBox2.Text + “‟)”; OleDbCommand cmd=new OleDbCommand(sql,conn); try { conn.Open(); cmd.ExecuteNonQuery(); MessageBox.Show("成功插入一条记录!"); conn.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message);
private void Form1_Load(object sender, System.EventArgs e) { string sql="select OrderID, CustomerID from dbo.Orders;"; OleDbCommand cmd=new OleDbCommand(sql,conn); conn.Open(); OleDbDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { ListViewItem li=new ListViewItem(); li.SubItems.Clear(); li.SubItems[0].Text=reader[0].ToString(); li.SubItems.Add(reader["CustomerID"].ToString()); listView1.Items.Add(li); } reader.Close(); conn.Close(); }
接 上 XmlNode root = doc.DocumentElement; XmlNode setttingNode = root.SelectSingleNode("setting"); string server = setttingNode.SelectSingleNode("server").InnerText; string db = setttingNode.SelectSingleNode("db").InnerText string conStr = "Provider=SQLOLEDB.1;"; // 创建ADO连接字符串 conStr += "Integrated Security=SSPI;"; conStr += "Initial Catalog=" + db + ";Data Source=" + server; conn.ConnectionString = conStr; } } }
class Student:DbConnection { 引用部分加入如下代码: private string no, name, sex, birthday, deptId; public Student(string no, string name, string sex, string birthday, string deptId) { this.no = no; this.name = name; this.sex = sex; this.birthday = birthday; this.deptId = deptId; } public bool save() //将输入的学生信息保存到数据库中 { //ToDo } //------getDeptList方法:从Department数据表中搜索所有院系信息列表保存在数组中 public static void getDeptList(out DataTable deptId,out DataTable deptName) { //ToDo } //------loadAllStudent方法:模糊查询满足条件的学生信息,并返回到listViewK控件中 public static void loadAllStudent(ListView lv, string no, string name) {//ToDo } public void loadSelectedCourse(ListView lv) //查询当前学生已选课程列表 {//ToDo } public void loadUnselectedCourse(ListView lv) //查询当前学生待选课信息 {//ToDo } //--------FillDataTableStudent方法:从表Student中读出数据,填入DataTable变量dt中 public static void FillDataTableStudent(out DataTable dt, out OleDbDataAdapter adapter) {//ToDo } }
OleDbConnection对象连接参数
属性
Provider Data Source
说明
指定OLEDB Provider 指定数据库服务器名称或位置
Initial Catalog
Intigrated Secuity
指定数据库名
SSPI
建立连接后,可以通过OleDbCommand对象执行 SQL命令,从数据源(如SQL Server)中返回结 果。 创建OleDbCommand对象时,需指定一个将 在数据源上执行的嵌入式SQL语句和Connection 对象。
<?xml version="1.0" encoding="UTF-8" ?> - <appConfig> - <setting> <server>WORKGROU-63F42D</server> <db>NTierStudent</db> </setting> </appConfig>
(4)在StudentManager目录下创建实体类Student
}
}
1.
系统的需求 选课系统有两类参与者:教务员和学生
教务员:
─ ─ ─ ─
可以输入一个新学生;更新、查询学生的信息。 可以输入一门新课程;更新、查询课程的信息。 可为指定教师开一门课程;查询已开课程的选课学生 名单。 可为指定的学生选课;输入学生成绩。
学生:
可以查询自己所有的选课信息,包括:自己的已选课 列表和待选课列表; ─ 可以选课。 ─ 可以输入自己对某门课程任课教师的评价。
─
2.
系统模块划分
3.
开发过程(以学生管理为例)
分析: ① 从系统模块划分的角度看,解决该问题需要一个主窗体和 三个子窗体。在主窗体的子菜单中完成对各子窗体的调用。 其中:
主窗体(Form1)包括一个主菜单和若干子菜单 输入子窗体(InputStudentForm)实现学生信息输入 查询子窗体(SearchStudentForm)实现学生选课查询 更新子窗体(UpdateStudentForm)实现学生信息的更新、删除
string sql="select count(*) as 订单数 from dbo.Orders;";
OleDbCommand cmd=new OleDbCommand(sql,conn);
执行方式
执行结果
用于执行嵌入式select的OleDbCommand ExecuteReader 命令,返回结果为一个数据流,即生成一 个OleDbDataReader对象。 执行查询,并返回查询的结果集中第一行 ExecuteScalar 的第一列,即只返回一个单值。 用于非select的OleDbCommand命令执行, ExecuteNonQuery 如 insert, delete, update 命令,直接更改 数据库中的数据。
②
从软件体系结构的角度看,学生管理程序可分三层部署。 具体如下:
数据存储层:创建学生管理所需数据库NTierStudent,并将其部署 在SQL Server2005数据库服务器端。 数据访问层:是客户端应用程序的重要组成成份之一。实现数据库 连接和访问功能。因此,要设计
─ ─
一个数据链接类DbConnection类:实现对服务器端数据库(如 NTierStudent) 的连接功能。 一个实体类Student类:实现对NTierSTUDENT库中学生信息的输入、查询、 更新与删除功能,其中学生信息输入、查询、更新与删除将以该类方法的 形式出现。 InputStudentForm、SearchStudentForm、 UpdateStudentForm三个窗体类。
ExecuteScalar()
DataReader
应用程序
1.
创建OleDbConnection对象 构造嵌入式SQL语句 创建OleDbCommand对象 执行SQL语句
2.
3.
4.
windows验证方式:
OleDbConnection conn = new OleDbConnection(); string conStr="Provider=SQLOLEDB.1; Data Source=jd228; Initial Catalog=NTierStudent; Integrated Security =SSPI; "; conn. ConnectionString=conStr;
输入项目名称NTier
在NTier下,创建CourseManager、StudentManager、 TeacherManager、UserManager四个文件夹。具体做法:
在解决方案资源管理器的树形目录中,右击NTier节点, 在弹出的快捷菜单中选择‚添加‛|‚新建文件夹‛命令。
(2)创建主窗口界面(Form1)
拖入 窗体
(3)在Ntier下创建数据连接类 DbConnection
using System; using System.Collections.Generic; using System.Text; using System.Data.OleDb; using System.Xml; using System.Windows.Forms; namespace NTier { class DbConnection { protected static OleDbConnection conn = new OleDbConnection(); static DbConnection() { string s = Application.ExecutablePath;//获得完整的应用程序的路径 int dotPos = s.IndexOf("."); s = s.Substring(0, dotPos); s += ".xml";// 将后缀名从exe改成xml XmlDocument doc = new XmlDocument(); doc.Load(s); 见 下
本课程将采用
Oracle .NET
Ole Db.NET 的类在System.Data.OleDb命名空间 中。 若访问的是OleDb数据库系统,应在程序顶部 引用部分增加如下引用语句:
using System.Data.OleDb
数据库
OleDbConnection
OleDbCommand ExecuteNonQuery() ExecuteReader() OleDbDataAdapter OleDbDataSet
数据表示层:即界面表达,是客户端应用程序的重要组成部分。
─
(1)创建项目NTier
选择菜单‚开始‛|‚ 所有程序‛|‚ Microsoft Visual Studio 2005‛|‚ Microsoft Visual Studio 2005‛,进入‚起始页-Microsoft Visual Studio‛。 在菜单栏中选择‚文件‛|‚新建‛|‚项目‛,打开【新建项 目】对话框,在此对话框中选择项目类型为Visuanl C# | Windows。