数据库原理 第九讲 Win 数据库设计_第1页
数据库原理 第九讲 Win 数据库设计_第2页
数据库原理 第九讲 Win 数据库设计_第3页
数据库原理 第九讲 Win 数据库设计_第4页
数据库原理 第九讲 Win 数据库设计_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理,第九讲 WinForm 数据库设计,蒲 飞,本次课目标,熟练使用ADO.net操作数据库 熟练使用Winform中的高级控件treeviewlistview绑定数据库高级用法 熟练利用DataGridView绑定数据及其高级应用 使用ADO.net操作图片及事务的高级应用 熟练使用ADO.net + Winform + SQL Server2008 R2开发数据库应用程序,知识点,ADO.NET 概述,数据库,使用数据库存储数据,SQL Server,MySQL,ORACLE,ADO .NET,数据库访问的方法和技术,ADO.NET 的主要组件,ADO.NET,DataSet(数据

2、集),.NET Framework 数据提供程序,只进、只读访问数据,独立于数据源的数据访问,ADO.NET 操作数据库结构图,本课内容,.NET 数据提供程序类型,为什么使用 Connection,应用程序,数据源,请求数据,Connection,连接数据库示例,连接到本机的 Scott数据库,演示示例1:测试 Scott 数据库连接,示例1 代码分析,/ 数据库连接字符串 string connString = Data Source= . ;Initial Catalog=Scott; User ID=sa; pwd=123456; / 创建 Connection 对象 SqlConne

3、ction connection = new SqlConnection(connString); / 打开数据库连接 connection.Open(); MessageBox.Show(打开数据库连接成功); / 关闭数据库连接 connection.Close(); MessageBox.Show(关闭数据库连接成功);,表示本机,或为server,或为database,或为uid,String connString=“Server=.;database=MySchool; integrated security=true”,Connection 主要成员,必须显式关闭连接,连接数据库步

4、骤,1、定义连接字符串,2、创建 Connection 对象,3、打开与数据库的连接,Data Source=服务器名;Initial Catalog=数据库名; User ID=用户名;Pwd=密码,SqlConnection connection = new SqlConnection(connString);,连接字符串,connection.Open( );,没有密码,可省略,Connection 对象,不同命名空间的 Connection 对象,使用异常处理,应用程序 打开数据库 处理数据 ,数据源,与数据库的连接中断,无法打开数据库,无法操作数据,出现意外错误!,出现异常,异常处理

5、,异常:在运行时发生的错误 异常处理:预知可能发生的异常,在程序中编码处理,操作数据库时可能发生异常: 无法打开数据库 无法读取数据 数据操作出错 ,如何处理异常,使用 trycatch 块捕获和处理异常,try connection.Open(); / connection.Close(); catch(处理的异常类型) / 错误处理代码 ,处理异常的代码,出现异常,跳到catch 否则正常向下执行,出现异常跳转,连接关闭语句将不被执行,包含可能出现异常的代码,如何处理异常,finally 块无论是否发生异常,都会执行,try connection.open(); / catch(处理的异常

6、类型) finally connection.Close(); ,可能出现异常的代码,处理异常的代码,是否发生异常 数据库连接都会关闭,必须执行的语句放在 finally 中,无论如何都会执行的代码,处理异常,connection.Open(); MessageBox.Show(打开数据库连接完毕); connection.Close(); MessageBox.Show(关闭数据库连接完毕);,修改示例1的代码,增加 try 语句块,演示示例2:使用trycatchfinally,小结,如果 try 中没有出现异常,显示哪几个消息框?,try / 可能出现异常的代码 MessageBox.S

7、how(try块); catch (Exception e) MessageBox.Show(catch块); finally MessageBox.Show(finally块); ,显示,显示,不显示,使用 Command,应用程序 打开数据库 处理数据 ,数据源,Connection,Command,执行命令并从数据源中返回结果,Command 的主要成员,使用 Command 步骤,使用Command步骤: 1、创建数据库连接 2、定义 SQL 语句 3、创建 Command 对象 4、执行命令,SqlConnection connection = new SqlConnection(c

8、onnString); string sql = SELECT COUNT(*) FROM emp; connection.Open();/ 打开数据库连接 SqlCommand command = new SqlCommand(sql, connection); int num = (int)command.ExecuteScalar();,示例 3 关键代码:,执行命令前,必须打开数据库连接!,返回的是Object类型数据,要进行类型转换!,综合示例,完成系统登录功能 1、验证MySchool教师的用户名和密码是否存在 2、验证通过,显示教师主窗体,处理登录按钮的 Click 事件 定义一

9、个 ValidateUser() 方法 需要 Connection 和 Command 对象 分两步实现验证: 1、建立数据库连接 2、验证用户是否存在,用户验证方法框架,ValidateUser() 方法框架,1、验证的结果:通过,不通过,返回值为 bool 型,2、方法需要: 用户名,密码,登录类型,值方式传参,3、不通过的原因: 用户名或密码不存在、其他原因,引用方式传参,public bool ValidateUser(string loginType, string loginId, string loginPwd, ref string message) ,演示示例4:增加方法的定

10、义和调用,用户验证方法具体实现,第一步:建立数据库连接 增加 DBHelper 类,第二步:查询用户是否存在 SELECT COUNT(*) ExecuteScalar() 方法查询,演示示例5:用户验证方法具体实现,ValidateUser() 方法具体实现,小结,/ 查询 Student 表使用的 SQL 语句 string sql = string.Format( SELECT COUNT(*) FROM MyScool WHERE LogInId=0 AND LogInPwd=1,txtLogInId, txtLogInPwd); / 使用的 Command 对象 SqlCommand

11、 command = new SqlCommand(sql, DBHelper.connection); DBHelper.connection.Open(); / 执行查询,返回找到的个数 count = (int)command.ExecuteScalar();,在示例5中增加验证用户的代码,小结,列举ADO.NET中的五个主要对象?,Connection Command DataReader DataAdapter DataSet,小结,说明Connection、Command、DataReader、DataAdapter、DataSet 各个对象的作用?,答: Connection 主

12、要用于数据库连结 Command 主要用于向数据库发送指令 DataReader 以只读只向前的方式读取数据库中返回的数据 DataAdapter 数据适配器,在数据库与DataSet之间起到一个连 结桥梁的作用 DataSet 相当于客户端的内存中的数据库,小贴士,设置窗体中当按回车键时执行某一个按钮,可在窗体属性AcceptButton设为该按钮,这样回车时就执行该按钮动作。当按ESC键时执行某一个按钮,可在窗体属性CancelButton设为该按钮,这样按ESC键时就执行该按钮动作。 关闭窗体的三种方式: 1、this.Close(); /关闭当前窗口 2、this.Hide(); /隐

13、藏窗口,但程序还在运行中 3、Application.Exit(); /结束当前应用程序,WinForm专用第三方换肤控件-IrisSkin2,使用方法: 1、先把IrisSkin2.dll文件添加到当前项目引用(解决方案资源管理器-当前项目-引用-右键-添加引用,找到IrisSkin2.dll文件。IrisSkin2.dll文件最好放在当前项目binDebug文件中(项目生成时自动添加至该文件夹下)。 2、 然后把IrisSkin2.dll文件添加到vc2010的工具箱:右键-选择项-浏览找到IrisSkin2.dll文件(文件最好放在当前项目binDebug文件中)按确定,控件就添加到工具

14、箱中了.然后把工具箱中新添加的SkinEngine控件拖到当前项目中。 3、把安装目录下Skins文件夹中的皮肤文件.ssk文件复制到当前项目binDebug文件中。,WinForm专用第三方换肤控件-IrisSkin2,4、再在项目中调用.ssk皮肤文件。例: namespace 当前项目 public partial class Form1 : Form public Form1() /当前项目的构造器中调用皮肤文件 InitializeComponent(); this.skinEngine1.SkinFile = DiamondBlue.ssk; / DiamondBlue.ssk可换

15、成皮肤目录中你喜欢的.ssk文件 / 把.ssk复制到当前项目binDebug目录中 ,WinForm专用第三方换肤控件-IrisSkin2,或者 在skinEngine所在窗体的代码段中添加 / skinEngine1 / . this.skinEngine1.SkinFile = DiamondGreen.ssk; 可用FaceChange应用程序,对各个皮肤界面进行选择。,使用 DataReader,应用程序,毛毛,北大,优秀,毛毛,姓名:,学校:,北大,成绩:,优秀,DataReader,怎样读取数据库的数据?,使用 DataReader 对象,数 据 库,DataReader 对象,

16、每次读取一行数据,使用 DataReader 查询数据,添加类别组合框中的类别名称,处理窗体 Load 事件 使用 DataReader 读取分组名称,演示示例:使用 DataReader 读取数据,代码分析,/ 执行查询 SqlDataReader dataReader = command.ExecuteReader(); string groupName = ; while (dataReader.Read() groupName = (string)dataReader0; cboGroup.Items.Add(groupName ); dataReader.Close();,循环读取数

17、据行 添加到组合框中,DataReader 的主要成员,DataReader 使用步骤小结,使用 DataReader 检索数据的步骤: 1、创建 Command 对象 2、调用 ExecuteReader() 创建 DataReader 对象 3、使用 DataReader 的 Read() 方法逐行读取数据 4、读取某列的数据,(type)dataReader 5、关闭 DataReader 对象,获取某列的值: 方法一:指定列的索引,从0开始 方法二:指定列名,注意:DataReader 使用后必须关闭,实例,编写窗体程序,从MySchool数据库的Teacher表中,读取出所有教师的姓

18、名到下拉框中,参考代码,string connStr = server=.;database=MySchool;integrated security=true; SqlConnection conn = new SqlConnection(connStr); SqlDataReader dr = null; try conn.Open(); SqlCommand comm = new SqlCommand(); comm.CommandText = select * from Teacher; comm.Connection = conn; dr = comm.ExecuteReader()

19、; if (dr.HasRows) comboBox1.Items.Clear(); while (dr.Read() string TeacherName = drTeacherName.ToString(); comboBox1.Items.Add(TeacherName); catch (SqlException ex) MessageBox.Show(“读取数据失败!+ex.Message); finally dr.Close(); conn.Close();,操作数据,应用程序,毛毛,北大,良好,毛毛,姓名:,学校:,北大,成绩:,良好,ExecuteNonQuery,如何对数据库的

20、数据进行增删改?,使用 ExecuteNonQuery() 方法,数 据 库,操作数据示例,怎样新增记录?,处理“保存”按钮的 Click事件 使用 ExecuteNonQuery() 方法向数据库增加记录,演示示例:向数据库增加记录,示例,通过窗体向数据库MySchool的表Teacher中插入新记录,如图:,代码分析,/ 创建command对象 SqlCommand command = new SqlCommand(sql, DBHelper.connection); / 打开数据库连接 DBHelper.connection.Open(); / 执行命令 int result = com

21、mand.ExecuteNonQuery(); ,返回受影响记录的行数,代码分析,string connStr = server=.;database=MySchool;integrated security=true; SqlConnection conn = new SqlConnection(connStr); try conn.Open(); SqlCommand comm = new SqlCommand(); string strSQL = insert into Teacher( TeacherId, LoginId, LoginPwd, UserStateId, Teacher

22、Name, Sex, Birthday )values( 0, 1, 2, 3,4, 5, 6 ); strSQL = string.Format(strSQL,textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text,textBox5.Text,textBox6.Text,textBox7.Text); comm.CommandText = strSQL; comm.Connection = conn; comm.ExecuteNonQuery(); MessageBox.Show(“新教师数据加载成功!); catch(SqlExcep

23、tion ex) MessageBox.Show(ex.Message); finally conn.Close(); ,ExecuteNonQuery()方法小结,该方法执行指定的 sql 语句 返回受影响的行数,使用 ExecuteNonQuery() 的步骤小结: 1、创建 Connection 对象 2、定义sql 语句 3、创建 Command 对象 4、执行 ExecuteNonQuery() 方法 5、根据返回的结果进行处理,查询数据综合示例,如何实现联系人信息查询功能?,1、使用DataReader 查询数据 2、使用ListView 控件显示数据,演示示例:教师信息查询,控件进阶列表视图控件,ListView :列表视图控件,以特定样式或视图类型显示列表项,ListView 控件属性和方法,ListView 控件的主要属性和方法:,列表示图项、子项,列的集合 Columns,项的集合 Items,列表视图项ListViewItem,列表视图项的子项ListViewSubItem,子项的集合 SubItems,示例,将数据库MySchool中表Teacher的数据添加到ListView中,如图:,代码,private void Form4_Load(obje

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论