版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C#数据库系统软件开发数据库高级应用C#数据库开发技术基础数据库开发技术基础1系统窗体开发系统窗体开发2系统登录及权限管理系统登录及权限管理3统计查询统计查询4报表和打印报表和打印5系统完善系统完善6LINQ技术技术7 目录目录数据库高级应用1.1 ADO.NET基础基础1.2 用 ADO.NET 连接数据库1.3 用 ADO.NET 查询和操作数据库1.4 用 DataGridView 显示和操作数据库第第1章章 C#数据库开发基础数据库开发基础第第1节节 ADO.NET 基础ADO.NET 简介ADO.NET 结构.NET Framework 数据提供程序ADO.NET DataSet总结
2、内容概述内容概述ADO.NET的名称起源于ADO(ActiveX Data Objects)表明在.NET编程环境中优先使用的数据访问接口一组向 .NET 程序员公开数据访问服务的类提供了对关系数据、XML 和应用程序数据的访问是.NET Framework 中不可缺少的一部分ADO.NET ADO.NET 简介简介两个组件:.NET Framework 数据提供程序DataSet关系图ADO.NET ADO.NET 结构结构关系图关系图.NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。ConnectionConnectionCommand C
3、ommand DataAdapterDataAdapterDataReader DataReader .NET Framework .NET Framework 数据提供程序数据提供程序是开启程序和数据库之间的连结没有利用连结对象将数据库打开,是无法从数据库中取得数据的这个对象在ADO.NET的最底层可以自己产生这个对象,或是由其它的对象自动产生说明:在连接数据库时,要根据使用数据库的不同,引入不同的命名空间,然后使用命名空间中指定的连接类来创建数据库连接对象。Connection Connection 对象对象10/17/2021实例操作:实例操作:1、利用SQL Server建立一数据库,
4、并建立相应的表;2、利用VS2010C#创建一windows应用程序,在窗体中添加一TextBox控件、一个Button控件和一个Label控件,分别用于输入要连接的数据库名称、执行连接数据库的操作以及显示数据库的连接状态,然后引入System.Data.SqlClient命名空间,使用SqlConnection类连接数据库。架构在Connection对象上向数据库发出操作指令(增、删、改、查)呼叫存在数据库中的预存程序等透过连结到数据源的Connection对象来下命令Connection连结到哪个数据库,Command对象的命令就下到哪里Command Command 对象对象10/17/
5、2021执行执行SQLSQL语句的实例操作语句的实例操作1、执行SQL语句,返回结果集中的第一行的第一列ExecuteScalar方法2、执行SQL语句,返回受影响的行数ExecuteNonQuery方法3、执行SQL语句,生成一个包含数据的SqlDataReader对象实例ExecuteReader方法架构在Command对象上,并提供了许多配合DataSet使用的功能在数据源于DataSet之间执行数据传输的工作它可以透过Command对象下达命令后,并将取得的数据放入DataSet对象中DataAdapter DataAdapter 对象对象一次一笔向下循序的读取数据源中的数据这些数据是
6、只读的,并不允许作其它的操作节省资源而且效率很好可以降低网络的负载DataReader DataReader 对象对象这个对象架构在DataAdapter对象上可以视为一个暂存区(Cache)可以把从数据库中所查询到的数据保留起来可以将整个数据库显示出来可以储存多个Table可以透过DataAdapter对象取得表结构可以记录数据表间的关联本身不具备和数据源沟通的能力与数据库关系图ADO.NET DataSetADO.NET DataSetADO.NET & DBADO.NET & DB关系图关系图ADO.NET是与数据源交互的.NET技术。有许多的Data Providers,它将允许与不同
7、的数据源交流取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,都将将使用相似的对象与数据源进行交互。Connection对象管理与数据源的连接。Command对象允许与数据源交 流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用DataReader。如果想使用断开数据,使用DataSet并实现能进行读取或者写入数据源的DataAdapter。总结总结第第2节节用 ADO.NET 连接数据库数据库高级应用预习检查预习检查 ADO.NET 的功能是什么?的功能是什么? 连接数据库使用什么对象?连接数据库使用什么对象? 执行执行 SQL 命令使用什么对象?命
8、令使用什么对象?数据库高级应用本节任务本节任务 完成完成 学生选课应用程序的登录功能学生选课应用程序的登录功能 连接到连接到 xk数据库数据库 查询用户名和密码是否存在查询用户名和密码是否存在数据库高级应用本节目标本节目标 了解了解 ADO.NET 的功能和组成的功能和组成 会使用会使用 Connection 对象连接到数据库对象连接到数据库 会使用会使用 Command 对象查询单个值对象查询单个值数据库高级应用ADO.NET 概述概述使用数据库存储使用数据库存储数据数据SQL-ServerACCESSORACLE数据库访问的方法和技术数据库访问的方法和技术数据库高级应用ADO.NET 的主
9、要组件的主要组件ADO.NETDataSet(数据集)(数据集).NET Framework 数据提供程序数据提供程序 只进、只读访问数据只进、只读访问数据独立于数据源的数据访问独立于数据源的数据访问数据库高级应用ADO.NET 操作数据库结构图操作数据库结构图本节内容本节内容数据库高级应用.NET 数据提供程序类型数据提供程序类型.NET Framework 数据提供程序数据提供程序说明说明SQL Server .NET 数据提供程序数据提供程序Microsoft SQL Server 数据源数据源System.Data.SqlClient 命名空间命名空间OLE DB .NET 数据提供程
10、序数据提供程序OLE DB 公开的数据源公开的数据源System.Data.OleDb 命名空间命名空间ODBC .NET 数据提供程序数据提供程序ODBC 公开的数据源公开的数据源System.Data.Odbc 命名空间命名空间Oracle .NET 数据提供程序数据提供程序Oracle 数据源数据源System.Data.OracleClient 命名空间命名空间数据库高级应用小结小结 ADO.NET 包括哪两个主要的组件?包括哪两个主要的组件? .NET 数据提供程序的四个核心对象是什么?数据提供程序的四个核心对象是什么?数据库高级应用为什么使用为什么使用 Connection应用程序
11、应用程序请求数据请求数据Connection桥梁桥梁数据库高级应用连接数据库示例连接数据库示例 连接到本机的连接到本机的 XK 数据库数据库演示示例演示示例1:测试测试 XK 数据库连接数据库连接数据库高级应用示例示例1 代码分析代码分析 关键代码回顾关键代码回顾/ 数据库连接字符串数据库连接字符串string connString = Data Source= . ;Initial Catalog=XK;User ID=sa;/ 创建创建 Connection 对象对象SqlConnection connection = new SqlConnection(connString); / 打开
12、数据库连接打开数据库连接connection.Open();MessageBox.Show(打开数据库连接成功打开数据库连接成功); / 关闭数据库连接关闭数据库连接connection.Close();MessageBox.Show(关闭数据库连接成功关闭数据库连接成功);表示本表示本机机示例示例1 1源代码源代码数据库高级应用Connection 主要成员主要成员必须显式关闭连必须显式关闭连接接属性属性说明说明ConnectionString 连接字符串连接字符串方法方法说明说明Open打开数据库连接打开数据库连接Close关闭数据库连接关闭数据库连接数据库高级应用连接数据库步骤连接数据库
13、步骤连接数据库的步骤:连接数据库的步骤:1、定义连接字符串、定义连接字符串2、创建、创建 Connection 对象对象3、打开与数据库的连接、打开与数据库的连接Data Source=服务器名服务器名;Initial Catalog=数据库名数据库名; User ID=用用户名户名;Pwd=密码密码SqlConnection connection = new SqlConnection(connString);连接字符串连接字符串connection.Open( );没有密码,可省没有密码,可省略略数据库高级应用Connection 对象对象命名空间命名空间对应的对应的 Connection
14、 对象对象System.Data.SqlClient SqlConnectionSystem.Data.OleDbOleDbConnectionSystem.Data.Odbc OdbcConnectionSystem.Data.OracleClientOracleConnection不同命名空间的不同命名空间的 Connection 对象对象数据库高级应用小结小结 连接到本机的连接到本机的 pubs 数据库数据库/ 连接字符串连接字符串string connString = Data Source=.;Initial Catalog=pubs;User ID=sa;/ 创建创建Connect
15、ion 对象对象 SqlConnection connection = new SqlConnection(connString);connection.Open( ); / 打开数据库连接打开数据库连接connection.Close( ); / 关闭数据库连接关闭数据库连接关键代码关键代码参考答案参考答案数据库高级应用为什么使用异常处理为什么使用异常处理应用程序应用程序打开数据库打开数据库处理数据处理数据与数据库的连接中断与数据库的连接中断无法打开数据库无法打开数据库无法操作数据无法操作数据出现意外错误!出现意外错误!出现异常出现异常数据库高级应用异常处理异常处理 异常异常:在运行时发生的
16、错误:在运行时发生的错误 异常处理异常处理:预知可能发生的异常,在程序中编:预知可能发生的异常,在程序中编码处理码处理操作数据库时可能发生异常:操作数据库时可能发生异常:无法打开数据库无法打开数据库无法读取数据无法读取数据数据操作出错数据操作出错数据库高级应用如何处理异常如何处理异常2-1 使用使用 trycatch 块捕获和处理异常块捕获和处理异常try connection.Open(); / connection.Close();catch(处理的异常类型处理的异常类型) / 错误处理代码错误处理代码处理异常的代码处理异常的代码出现异常,跳到出现异常,跳到catch否则正常向下执行否则正
17、常向下执行出出现现异异常,常,跳跳转转连接关闭语连接关闭语句将不被执句将不被执行行包含可能出现异常包含可能出现异常的代码的代码数据库高级应用如何处理异常如何处理异常2-2 finally 块块无论是否发生异常,都会执行无论是否发生异常,都会执行try connection.open(); / catch(处理的异常类型处理的异常类型) finally connection.Close();可能出现异常的代可能出现异常的代码码处理异常的代码处理异常的代码是否发生异常是否发生异常数据库连接都会关数据库连接都会关闭闭必须执行的必须执行的语句放在语句放在 finally 中中无论如何都会执行无论如何都
18、会执行的代码的代码数据库高级应用connection.Open();MessageBox.Show(打开数据库连打开数据库连接完毕接完毕); connection.Close();MessageBox.Show(关闭数据库连关闭数据库连接完毕接完毕);处理异常处理异常 修改示例修改示例1的代码,增加的代码,增加 try 语句块语句块演示示例演示示例2:使用使用trycatchfinally数据库高级应用小结小结如果如果 try 中中没有出现异常没有出现异常,显示哪几个消,显示哪几个消息框?息框?try / 可能出现异常的代码可能出现异常的代码 MessageBox.Show(try块块); c
19、atch (Exception e) MessageBox.Show(catch块块);finally MessageBox.Show(finally块块);显示显示显示显示不显示不显示数据库高级应用为什么使用为什么使用 Command应用程序应用程序打开数据库打开数据库处理数据处理数据Connection怎样处理怎样处理数据数据执行命令并从数据源中返回结果执行命令并从数据源中返回结果 数据库高级应用操作数据库示例操作数据库示例 查询查询 XK数据库数据库 Student 表中记录的数目表中记录的数目演示示例演示示例3:查询查询Student表记录条数表记录条数数据库高级应用Command 的
20、主要成员的主要成员属性属性说明说明Connection Command对象使用的数据库连接对象使用的数据库连接CommandText执行的执行的SQL语句语句方法方法说明说明 ExecuteNonQuery执行不返回行的语句,如执行不返回行的语句,如UPDATE等等ExecuteReader返回返回DataReader对象对象ExecuteScalar返回单个值,如执行返回单个值,如执行COUNT(*)数据库高级应用使用使用 Command 步骤步骤使用使用Command步骤:步骤:1、创建数据库连接、创建数据库连接2、定义、定义 SQL 语句语句3、创建、创建 Command 对象对象4、执
21、行命令、执行命令SqlConnection connection = new SqlConnection(connString);string sql = SELECT COUNT(*) FROM Student;connection.Open();/ 打开数据库连接打开数据库连接SqlCommand command = new SqlCommand(sql, connection);int num = (int)command.ExecuteScalar();示例示例 3 关键代关键代码:码:执行命令前,必须打开数据执行命令前,必须打开数据库连接!库连接!要进行类型转换!要进行类型转换!数据
22、库高级应用综合示例综合示例完成系统登录功能完成系统登录功能1、验证管理员的用户名和密码是否存在、验证管理员的用户名和密码是否存在2、验证通过,显示管理员主窗体、验证通过,显示管理员主窗体处理登录按钮的处理登录按钮的 Click 事件事件定义一个定义一个 ValidateUser() 方法方法需要需要 Connection 和和 Command 对象对象分两步实现验证分两步实现验证:1、建立数据库连接、建立数据库连接2、验证用户是否存在、验证用户是否存在 数据库高级应用用户验证方法框架用户验证方法框架ValidateUser() 方法框方法框架架1、验证的结果:通过,不、验证的结果:通过,不通过
23、通过返回值为返回值为 bool 型型2、方法需要:、方法需要: 用户名,密码,登录类型用户名,密码,登录类型值方式传参值方式传参3、不通过的原因:、不通过的原因: 用户名或密码不存在、其用户名或密码不存在、其他原因他原因引用方式传参引用方式传参public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) 演示示例演示示例4:增加方法的定义和调用增加方法的定义和调用数据库高级应用用户验证方法具体实现用户验证方法具体实现 第一步:建立数据库连接第一步:建立数据库连接 增
24、加增加 DBHelper 类类 第二步:查询用户是否存在第二步:查询用户是否存在 SELECT COUNT(*) ExecuteScalar() 方法查询方法查询演示示例演示示例5:用户验证方法具体实现用户验证方法具体实现ValidateUser() 方法具体实现方法具体实现数据库高级应用小结小结/ 查询查询 Student 表使用的表使用的 SQL 语句语句string sql = string.Format( SELECT COUNT(*) FROM Student WHERE LogInId=0 AND LogInPwd=1,txtLogInId, txtLogInPwd);/ 使用的使
25、用的 Command 对象对象SqlCommand command = new SqlCommand(sql, DBHelper.connection);DBHelper.connection.Open();/ 执行查询,返回找到的个数执行查询,返回找到的个数count = (int)command.ExecuteScalar();参考答案参考答案在示例在示例5中增加验证学员用户的中增加验证学员用户的代码代码数据库高级应用总结总结 Connection 对象的什么方法用来打开和关对象的什么方法用来打开和关闭数据库连接?闭数据库连接? ExecuteScalar()方法返回什么?方法返回什么?第
26、第3节节用 ADO.NET 查询和操作数据库数据库高级应用回顾回顾 Connection 对象的作用是什么?对象的作用是什么? 什么是异常,用什么结构处理异常?什么是异常,用什么结构处理异常? ExecuteScalar() 方法返回什么?方法返回什么?数据库高级应用预习检查预习检查 DataReader 对象的用途是什么?对象的用途是什么? ExecuteNonQuery() 方法的功能是什么?方法的功能是什么? ExecuteReader() 方法的功能是什么?方法的功能是什么?数据库高级应用本节任务本节任务 选课系统的学生信息的增删改查选课系统的学生信息的增删改查 实现学员信息的模糊查询
27、实现学员信息的模糊查询 实现添加学员用户功能实现添加学员用户功能 实现修改学员用户状态功能实现修改学员用户状态功能 实现删除学员用户功能实现删除学员用户功能数据库高级应用本节目标本节目标 会使用会使用 DataReader 对象检索数据对象检索数据 会使用会使用 Command 对象操作数据对象操作数据 掌握掌握 ListView 控件的使用控件的使用 掌握掌握 ContextMenuStrip 控件的使用控件的使用数据库高级应用为什么使用为什么使用 DataReader应用程序应用程序 毛毛,安阳师院,毛毛,安阳师院,优秀优秀 毛毛毛毛姓名:姓名:学校:学校: 安阳师院安阳师院成绩:成绩:
28、优秀优秀 怎样读取数据库的数据?怎样读取数据库的数据?使用使用 DataReader 对象对象数据库高级应用DataReader 对象对象 每次读取一行数据每次读取一行数据命名空间命名空间对应的对应的 DataReader 对象对象System.Data.SqlClient SqlDataReaderSystem.Data.OleDbOleDbDataReaderSystem.Data.Odbc OdbcDataReaderSystem.Data.OracleClientOracleDataReader数据库高级应用使用使用 DataReader 查询数据查询数据添加年级组合框中的年级名称添加
29、年级组合框中的年级名称 处理窗体处理窗体 Load 事件事件 使用使用 DataReader 读取读取年级名称年级名称 演示示例演示示例1:使用使用 DataReader 读取数据读取数据数据库高级应用示例示例1 代码分析代码分析 关键代码回顾:关键代码回顾:示例示例1 1源代码源代码/ 执行查询执行查询SqlDataReader dataReader = command.ExecuteReader();string gradeName = ; / 年级名称年级名称/ 循环读出所有的年级名,并添加到年级列表框中循环读出所有的年级名,并添加到年级列表框中while (dataReader.Rea
30、d() gradeName = (string)dataReader0; cboGrade.Items.Add(gradeName);dataReader.Close();循环读取数据循环读取数据行行添加到组合框添加到组合框中中数据库高级应用DataReader 的主要成员的主要成员属性属性说明说明HasRows 是否返回了结果是否返回了结果方法方法说明说明 Read前进到下一行记录前进到下一行记录Close关闭关闭 DataReader 对象对象 DataReader 的主要成员:的主要成员:数据库高级应用DataReader 使用步骤小结使用步骤小结使用使用 DataReader 检索数据
31、的步骤:检索数据的步骤:1、创建、创建 Command 对象对象2、调用、调用 ExecuteReader() 创建创建 DataReader 对象对象3、使用、使用 DataReader 的的 Read() 方法逐行读取数据方法逐行读取数据4、读取某列的数据,、读取某列的数据,(type)dataReader 5、关闭、关闭 DataReader 对象对象获取某列的值:获取某列的值:方法一:指定列的索引,方法一:指定列的索引,从从0开始开始方法二:指定列名方法二:指定列名注意:注意:DataReader 使用后必须关使用后必须关闭闭数据库高级应用小结小结 编写控制台程序,从编写控制台程序,从
32、XK数据库的数据库的Student表表中,读取出所有姓中,读取出所有姓“李李”学员的姓名学员的姓名参考代码参考代码string sql = SELECT StudentName FROM Student WHERE StudentName LIKE 李李%;SqlCommand command = new SqlCommand(sql, connection);connection.Open();SqlDataReader dataReader = command.ExecuteReader();Console.WriteLine(查询结果查询结果:);while (dataReader.Re
33、ad() Console.WriteLine(string)dataReaderStudentName);dataReader.Close();数据库高级应用操作数据操作数据应用程序应用程序毛毛,北大青鸟,毛毛,北大青鸟,良好良好 毛毛毛毛姓名:姓名:学校:学校: 北大青鸟北大青鸟成绩:成绩: 良好良好 如何对数据库的数据进行如何对数据库的数据进行增删改增删改?使用使用 ExecuteNonQuery() 方法方法数据库高级应用操作数据示例操作数据示例怎样新增学员用户?怎样新增学员用户? 处理处理“保存保存”按钮的按钮的 Click事件事件 使用使用 ExecuteNonQuery() 方法向
34、数据库增加记录方法向数据库增加记录 演示示例演示示例2:向数据库增加记录向数据库增加记录数据库高级应用示例示例 2 代码分析代码分析 关键代码回顾:关键代码回顾:示例示例2 2源代码源代码/ 创建创建command对象对象SqlCommand command = new SqlCommand(sql, DBHelper.connection); / 打开数据库连接打开数据库连接DBHelper.connection.Open(); / 执行命令执行命令int result = command.ExecuteNonQuery(); 返回受影响记录的行数返回受影响记录的行数数据库高级应用Execu
35、teNonQuery()方法小结方法小结 该方法该方法执行执行指定的指定的 sql 语句语句 返回返回受影响的行数受影响的行数使用使用 ExecuteNonQuery() 的步骤小结:的步骤小结:1、创建、创建 Connection 对象对象2、定义、定义sql 语句语句3、创建、创建 Command 对象对象4、执行、执行 ExecuteNonQuery() 方法方法5、根据返回的结果进行处理、根据返回的结果进行处理数据库高级应用private void btnAdd_Click(object sender, EventArgs e) string connStr = ; SqlConnec
36、tion connection = new SqlConnection(connStr); / 向数据库中添加年级名称的代码向数据库中添加年级名称的代码小结小结 向数据库中添加年级向数据库中添加年级 假设数据库连接字符串假设数据库连接字符串已知为已知为 connStr 将添加年级名称部分的将添加年级名称部分的代码补充完整代码补充完整string connStr = ;SqlConnection connection = new SqlConnection(connStr); / 插入记录用的插入记录用的 SQL 语句语句 string sql = string.Format( INSERT I
37、NTO Grade (GradeName) VALUES (0), txtGradeName.Text);/ 创建创建 Command 对象对象SqlCommand command = new SqlCommand(sql, connection);/ 打开数据库连接打开数据库连接connection.Open(); / 执行插入命令执行插入命令int result = command.ExecuteNonQuery();connection.Close(); / 关闭数据库连接关闭数据库连接 参考代码参考代码数据库高级应用查询数据综合示例查询数据综合示例如何实现学员信息查询功能?如何实现学员
38、信息查询功能?使用使用DataReader 查询数据查询数据使用使用ListView 控件显示数据控件显示数据 演示示例演示示例3:学员信息查询功能学员信息查询功能数据库高级应用示例示例3 代码分析代码分析 关键代码回顾关键代码回顾查询信息查询信息:示例示例3 3源代码源代码 / 执行查询用户命令执行查询用户命令dataReader = command.ExecuteReader(); while (dataReader.Read() / 读取各列的数据读取各列的数据 loginId = (string)dataReaderLoginId; / 向向 ListView 中添加记录中添加记录da
39、taReader.Close(); / 关闭关闭 DataReader 对象对象回顾回顾 DataReader 的使用步骤的使用步骤数据库高级应用示例示例3 代码分析代码分析 关键代码回顾关键代码回顾添加记录到添加记录到 ListView:示例示例3 3源代码源代码/ 创建一个创建一个ListView项项ListViewItem lviStudent = new ListViewItem(loginId); / 将将ID放在放在Tag中中lviStudent.Tag = (int)dataReaderStudentID; / 向向ListView中添加一个新项中添加一个新项lvStudent.
40、Items.Add(lviStudent); / 向当前项中添加子项向当前项中添加子项lviStudent.SubItems.AddRange( new string studentName, studentNO, userState ); 创建列表视图项创建列表视图项添加列表视图项添加列表视图项添加列表视图项的子添加列表视图项的子项项数据库高级应用控件进阶控件进阶列表视图控件列表视图控件 ListView :列表视图控件:列表视图控件以特定样式或视图类型显示列表项以特定样式或视图类型显示列表项数据库高级应用 ListView 控件属性和方法控件属性和方法属性属性说明说明Columns“详细信
41、息详细信息”视图中显示的列视图中显示的列SelectedItems选中的项的集合选中的项的集合View指定显示五种视图中的哪一种视图指定显示五种视图中的哪一种视图方法方法说明说明Clear()移除移除ListView中的所有项中的所有项 ListView 控件的主要属性和方法:控件的主要属性和方法:数据库高级应用列表示图项、子项列表示图项、子项列的集合列的集合Columns项的集合项的集合Items列表视图项列表视图项ListViewItem列表视图项的子列表视图项的子项项ListViewSubItem子项的集合子项的集合SubItems数据库高级应用操作数据综合示例操作数据综合示例修改学员用
42、户的状态修改学员用户的状态使用快捷菜单列出各个使用快捷菜单列出各个操作操作使用使用 ExecuteNonQuery() 方法操作数据方法操作数据 演示示例演示示例4:修改用户状态为修改用户状态为“非活动非活动”数据库高级应用示例示例4 代码分析代码分析 关键代码回顾关键代码回顾修改用户状态修改用户状态:示例示例4 4源代码源代码/ 修改用修改用sql语句语句string sql = string.Format( Update Student SET UserStateId=0 WHERE StudentID=0, (int)lvStudent.SelectedItems0.Tag);/ 创建创
43、建Command对象对象SqlCommand command = new SqlCommand(sql, DBHelper.connection);DBHelper.connection.Open(); / 打开数据库连接打开数据库连接result = command.ExecuteNonQuery(); / 执行命令执行命令 DBHelper.connection.Close(); / 关闭数据库连接关闭数据库连接FillListView(); / 重新查询信息填充列表视图重新查询信息填充列表视图回顾回顾 ExecuteNonQuery() 的使的使用步骤用步骤数据库高级应用控件进阶控件进阶
44、快捷菜单控件快捷菜单控件 ContextMenuStrip :快捷菜单控件:快捷菜单控件 为控件指定快捷菜单:为控件指定快捷菜单:ContextMenuStrip 属性属性显示与控件关联的菜单显示与控件关联的菜单数据库高级应用 ContextMenuStrip属性和方法属性和方法属性属性说明说明DisplayStyle指定是否显示图像和文本指定是否显示图像和文本Image显示在菜单项上的图像显示在菜单项上的图像Text显示在菜单项上的文本显示在菜单项上的文本方法方法说明说明Click单击事件,单击菜单项时发生单击事件,单击菜单项时发生 ContextMenuStrip 控件的主要属性和方法控件
45、的主要属性和方法数据库高级应用操作数据综合示例操作数据综合示例删除学员用户信息删除学员用户信息 演示示例演示示例5:删除学员用户信息删除学员用户信息数据库高级应用小结小结 在示例在示例5中,实现修改学员状态为中,实现修改学员状态为“活动活动”的功能的功能参考代码参考代码/ 关键代码关键代码/ 修改用修改用sql语句语句string sql = string.Format( Update Student SET UserStateId=1 WHERE StudentID=0, (int)lvStudent.SelectedItems0.Tag);/ 创建创建Command对象对象SqlComma
46、nd command = new SqlCommand(sql, DBHelper.connection);DBHelper.connection.Open(); / 打开数据库连接打开数据库连接result = command.ExecuteNonQuery(); / 执行命令执行命令DBHelper.connection.Close(); / 关闭数据库连接关闭数据库连接数据库高级应用操作数据库总结操作数据库总结 操作数据库相关对象操作数据库相关对象相关对象相关对象用途用途Connection 对象对象连接数据库连接数据库Command 对象对象执行执行 SQL 命令命令DataReade
47、r 对象对象读取查询结果中的数据读取查询结果中的数据数据库高级应用使用命令操作数据库使用命令操作数据库 使用使用 Command 对象对象检索检索数据库的步骤数据库的步骤创建查询用创建查询用 sql 语句语句创建创建 Connection 对对象象创建创建 Command 对对象象返回返回 DataReader 对象对象使用使用 DataReader 的的 Read() 方法逐行读方法逐行读取结果取结果使用使用列名或列的索引从列名或列的索引从 DataReader 中中获取某列获取某列的值的值返回单个值返回单个值执行执行 ExecuteReader() 方方法法执行执行 ExecuteScal
48、ar() 方方法法数据库高级应用使用命令操作数据库使用命令操作数据库 使用使用 Command 对象对象更改更改数据库的步骤数据库的步骤创建创建 sql 语句语句Insert、Update、Delete创建创建 Connection 对象对象创建创建 Command 对对象象返回受影响的行数返回受影响的行数执行执行 ExecuteNonQuery() 方法方法数据库高级应用总结总结 ExecuteReader() 方法返回什么?方法返回什么? ExecuteNonQuery() 方法返回什么?方法返回什么? 使用使用什么对象读取什么对象读取数据库查询结果?数据库查询结果? 使用使用什么方法修改
49、什么方法修改数据库数据?数据库数据?第第4节节用 DataGridView 显示和操作数据库数据库高级应用回顾回顾/ command 是一个有效的是一个有效的 Command 对象对象SqlDataReader dataReader = command.ExecuteReader(); if (dataReader.HasRows) studentName= dataReader0; dataReader.Close();缺少缺少 dataReader.Read();没有类型转换没有类型转换(string)dataReader0;数据库高级应用预习检查预习检查 DataSet 对象的作用是什么
50、?对象的作用是什么? DataAdapter 对象的作用是什么?对象的作用是什么? DataGridView 控件的作用是什么?控件的作用是什么?数据库高级应用本节任务本节任务 选课系统的用户管理模块选课系统的用户管理模块 实现批量查看和修改实现批量查看和修改教员教员信息功能信息功能 实现批量查看、筛选和修改实现批量查看、筛选和修改学员学员信息功能信息功能数据库高级应用本节目标本节目标 了解数据集(了解数据集(DataSet)的结构)的结构 会使用数据适配器填充数据集会使用数据适配器填充数据集 会使用数据适配器将数据集的修改提交会使用数据适配器将数据集的修改提交到数据库到数据库 掌握掌握 Da
51、taGridView 控件的使用控件的使用数据库高级应用 为什么使用为什么使用 DataSet 对象对象应用程序应用程序大量的数据大量的数据来自多个数据源来自多个数据源 大批量的查询、修改数据怎么办?大批量的查询、修改数据怎么办? 想在断开数据库连接的情况下操所数据怎么办?想在断开数据库连接的情况下操所数据怎么办?使用使用 DataSet 对象对象 数据库高级应用什么是什么是 DataSet 对象对象 DataSet 数据集数据集 简单理解为一个临时数据库简单理解为一个临时数据库 将数据源的数据保存在内存中将数据源的数据保存在内存中 独立于任何数据库独立于任何数据库生产线生产线应用程序应用程序
52、驻留于内存,驻留于内存,临时存储数据临时存储数据类似的关系类似的关系数据库高级应用DataSet 的结构的结构2-1DataSet 的基本结构的基本结构DataSetDataTableDataColumnCollectionDataRowCollectionDataColumnDataRowDataTableCollection数据集数据集数据表的集数据表的集合合数据表数据表数据列的集数据列的集合合数据行的集数据行的集合合数据列数据列数据行数据行数据库高级应用DataSet 的结构的结构2-2GradeTableClassTableStudentTableidnameclasssex1小菲小菲
53、5女女2小薇小薇3女女3小强小强6男男DataTableCollection数据表集合数据表集合DataTable数据表数据表DataRowCollection数据行集合数据行集合DataRow数据行数据行DataColumnCollection数据列集合数据列集合DataColumn数据列数据列数据库高级应用数据集的工作原理数据集的工作原理发送数发送数据据修改数修改数据集据集传递数传递数据据提交修改后的提交修改后的数据数据请求数请求数据据客户端客户端数据库高级应用如何创建如何创建 DataSet 对象对象 创建一个创建一个 DataSet 可以指定一个数据集的名称可以指定一个数据集的名称 如
54、果不指定名称,则默认被设为如果不指定名称,则默认被设为NewDataSetDataSet dataSet = new DataSet();DataSet dataSet = new DataSet(MySchool);DataSet 数据集对象数据集对象 = new DataSet(数据集的名称字数据集的名称字符串符串);可选的可选的数据库高级应用为什么使用为什么使用 DataAdapter 如何将数据库的数据放在如何将数据库的数据放在 DataSet 中?中?数据库数据库DataSet数据集数据集Connection数据库连接数据库连接DataAdapter数据适配器数据适配器数据库高级应用
55、DataAdapter 对象对象 不同命名空间的不同命名空间的 DataAdapter 对象对象命名空间命名空间对应的对应的 DataAdapter 对象对象System.Data.SqlClient SqlDataAdapterSystem.Data.OleDbOleDbDataAdapterSystem.Data.Odbc OdbcDataAdapterSystem.Data.OracleClientOracleDataAdapter数据库高级应用如何填充数据集如何填充数据集 使用使用 DataAdapter 对象填充数据集对象填充数据集使用使用 Fill() 方法填充方法填充 DataS
56、et 中的表中的表使用使用 Connection 连接数据源连接数据源ConnectionDataAdapter 的的 Fill() 方法方法数据库高级应用填充数据集填充数据集演示示例演示示例1:查看教师信息窗体查看教师信息窗体填充数据集,打印部填充数据集,打印部分内容分内容SqlDataAdapter 对象名对象名 = new SqlDataAdapter(查询用查询用sql语句语句, 数据库连数据库连接接);创建创建 SqlDataAdapter 对象对象1DataAdapter对象对象. Fill(数据集对象数据集对象, 数据表名称字符数据表名称字符串串);填充填充 DataSet2数据
57、库高级应用如何保存如何保存 DataSet 中的数据中的数据 把数据集中修改过的数据提交到数据源把数据集中修改过的数据提交到数据源dataAdapter.Update(dataSet,Teacher);DataAdapter 的的 Update() 方法方法调用前,要先设置更新需要的相关命令调用前,要先设置更新需要的相关命令可以使用可以使用 SqlCommandBuilder 对象对象Connection数据库高级应用SqlCommandBuilder 对象对象 利用利用 SqlCommandBuilder 对象能够自动生成:对象能够自动生成: INSERT 命令命令 UPDATE 命令命令
58、DELETE 命令命令SqlCommandBuilder builder = new SqlCommandBuilder(已创建的已创建的DataAdapter对对象象);数据库高级应用保存保存 DataSet 中的数据中的数据自动生成用于更新的相关命令自动生成用于更新的相关命令1将将 DataSet 的数据提交到数据源的数据提交到数据源2SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter); dataAdapter.Update(dataSet,Teacher); 步骤:步骤:SqlCommandBuilder buil
59、der = new SqlCommandBuilder(已创建的已创建的DataAdapter对对象象);DataAdapter对象对象. Update(数据集对象数据集对象, 数据表名称字符数据表名称字符串串);数据库高级应用DataAdapter 对象小结对象小结 DataAdapter 的主要属性和方法的主要属性和方法属性属性说明说明SelectCommand 从数据库检索数据的从数据库检索数据的 Command 对象对象方法方法说明说明Fill 向向 DataSet 中的表填充数据中的表填充数据Update将将 DataSet 中的数据提交到数据库中的数据提交到数据库数据库高级应用小结小结 使用什么方法填充使用什么方法填充 DataSet ? DataAdapter 的作用是什么?的作用是什么? 使用什么方法将使用什么方法将 DataSet 中数据提交到数据中数据提交到数据库?库?数据库高级应用为什么使用为什么使用 DataGridView 怎样显示怎样显示 DataSet 中的数据呢?中的数据呢?使用使用 DataGridView数据库高级应用DataGridView 控件控件 DataGridView 控件控件强大而灵活地显示数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广德延迟开学通知书
- 康美中药城停电通知书
- 延吉隔离特殊情况通知书
- 延迟开工裁员通知书
- 开发区核酸29号通知书
- 开封恒大未来城收房通知书
- 开江道入学通知书
- 2023年酒泉辅警招聘考试题库附答案详解(考试直接用)
- 2024年包头辅警协警招聘考试真题附答案详解
- 2024年凉山州辅警招聘考试真题(含答案详解)
- 六年级安全课
- 50项护理基础操作评分标准
- 质量奖知识和信息管理
- 《财务费用报销培训》课件
- 中药智慧药房系统建设方案
- 《讲师授课技巧》课件111
- 重难点31 立体几何压轴小题(轨迹与最值)十四大题型【2024高考数学二轮复习题型突破】(解析版)
- 2024年康复治疗学:专业与创新
- 草料库房设计方案
- 2024年山东省公务员录用考试《行测》真题及答案解析
- 2024−2025学年高一上学期期中考试数学试题含答案
评论
0/150
提交评论