ch13-数据库编程技术.ppt_第1页
ch13-数据库编程技术.ppt_第2页
ch13-数据库编程技术.ppt_第3页
ch13-数据库编程技术.ppt_第4页
ch13-数据库编程技术.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

,第十三章 数据库连接与操作,2019/6/5,2,主要内容,数据库访问 数据库连接 数据库操作 二进制数据对象操作,2019/6/5,3,13.1 数据库访问,连接模式访问数据库 无连接模式访问数据库,有连接模式下的数据库访问通常包括以下步骤: 通过数据库连接类(Connection)连接到数据库,如 SQL Server 服务器、Access 数据库文件等。 通过数据库命令(Command)在数据库上执行 SQL 语 句,可以是任何 SQL 语句,包括更新(Update)、插入(Insert Inot)、 删除(Delete)、查询(Select)等。 如果查询语句,还可以通过数据读取器(DataReader) 类进行只读只向前读取数据记录。 数据库操作完成后通过连接类(Connection)关闭数据 库连接。,在有连接模式下进行数据库访问,尽量不要长时间操作,因为这样会导致数据库服务器被长期占用,影响其他客户端连接到 数据库服务器。所以,在使用之前打开数据库连接,使用之后马 上关闭数据库连接,在无连接模式下,需要处理的数据库服务器中的数据在本地有一个副本,通常保存在 DataSet 或 DataTable 中, ADO.NET 通过数据适配器(DataAdapter)将本地数据和数据库服务器关联起来,在从数据库服务器得到数据之后,数据适配器 断开与服务器连接,对数据的修改都通过修改本地的 DataSet 完成,然后再通过数据适配器更新到服务器。,无连接模式的数据库访问通常需要以下步骤: 通过数据库连接类(Connection)指定需要连接的数据库服务器。 创建基于该数据库连接的数据适配器,并指定更新数据 库的语句,包括插入、更新、查询和删除命令。DataAdapter 通 过这 4 个命令从数据库获取数据,也将本地的数据更改更新到数 据库服务器。 通过 DataAdapter 从数据库服务器获取数据到本地DataSet 或 DataTable 中。 使用或更改本地 DataSet 或 DataTable 中的数据。 通过 DataAdapter 将本地数据的更改更新到数据服务器, 并关闭数据库连接。,基于无连接的数据库访问,具有执行效率高、数据库连接占 用时间短、修改记录易更改和回滚等优点,但是也在一定程度上导致了数据更新的不及时。,13.2 数据库连接,1 连接到本机数据库 连接字符串通常为 String ConStr=“Server=(local);database=;Integrated Security=sspi” 例如: string ConStr=“Server=(local);database=study; Integrated Security=sspi” 注意:最少有此3项,即服务器实例数据库名联合安全,2连接到远程数据库 连接字符串通常为 string ConStr=“Server=;database=; Integrated Security=false;uid;pwd” 在远程情况下,不能使用Integrated Security=sspi,因为本地 当前的Windows帐户很可能在远程机上没有被其SQL Server授权。 程序分析:例13-1,3 关闭数据库连接 通过调用 SqlConnection 对象的 Close 方法或 Dispose 方 法关闭与数据库的连接,这两种方法的主要区别是:Close 方法用于关闭一个连接,而 Dispose 方法不仅关闭一个连接,而且还清理连接所占用的资源。当使用 Close 方法关闭连接后,可以再 调用 Open 方法打开连接,不会产生任何错误。而如果使用 Dispose 方法关闭连接,就不可以再次直接用 Open 方法打开连 接,必须再次重新初始化连接再打开。 程序分析: 13-2,13.3 数据库操作,1 使用 SqlCommand 提交增删改命令 ExecuteNonQuery () 执行 SQL 语句,并返回受影响的行数,在使用 SqlCommand 向数据库发送增、删、改命令时,通常使用 ExecuteNonQuery 方 法执行发送的 SQL 语句。 语法如下: Public override int ExecuteNonQuery(); 返回值:受影响的行数。 程序分析:13-3,2 ExecuteReader () 执行 SQL 语句,并生成一个包含数据的 SqlDataReader 对象 的实例。 语法如下: public SqlDataReader ExecuteReader() 返回值:一个 SqlDataReader 对象。 程序分析:13-4,3 ExecuteScalar 方法 执行 SQL 语句,返回结果集中的第一行的第一列。 语法如下: public override Object ExecuteScalar() 返回值:结果集中第一行的第一列或空引用( 如果结果集为空)。 程序分析:13-5,4 带参数的 Command 对象 带参数的 Command 对象的执行机制关键步骤主要有四步。 第一步:封装参数形式定义 带参数的 Command 对象中封装的 SQL 语句不再是固定的代 码,而是先以参数的形式定义。类似“ParaName”这样以“” 开头的字符串称为参数,按照表的结构设置同样多的参数,一一 对应。,例如: SqlCommand nonquerycommand = new SqlCommand(); nonquerycommand.CommandText =“Insert into student(s_id,s_name, s_sex,s_age,s_phone,s_addr,s_photo)”+“VALUES(ParaId,ParaName, ParaSex,ParaAge,ParaPhone,ParaAddr,ParaPhoto)”;,第二步:添加参数类型和长度 通过命令对象的 Parameters 属性,调用 Add 方法添加参数的 数据类型和长度,应该和后台 SQL Server 数据库中的表的结构 一致起来。 例如: nonquerycommand.Parameters.Add(“ParaId”,SqlDbType.Char,12); nonquerycommand.Parameters.Add(“ParaName”,SqlDbType.NvarChar,40); nonquerycommand.Parameters.Add(“ParaSex”,SqlDbType.Char,2);,第三步:为参数赋值 例如: nonquerycommand.Parameters“ParaId“.Value = TextBox1.Text; nonquerycommand.Parameters“ParaName“.Value = TextBox2.Text; 这里,我们使用文本框为参数赋值。其实,赋值的方法并不仅限于使用文本框,可以输入值的控件都行。,第四步:预编译命令对象 最后通过调用命令对象的 Prepare()方法预先编译命令对象, 将编译后的封装了 SQL 语句的命令对象放在内存中备用。 这样,SQL Server 服务器内存中就会按照设置的参数预先给 Insert 语句进行编译,一旦参数到达就直接调用内存中的执行计 划来执行,在第一次编译后就不再需要编译了,从而大大提高了 效率。 程序分析:13-6,5数据库查询 在 ADO.NET 中实现查询通常有两种方法: 方法一是通过命 令对象执行 SQL 语句,从数据源中获取信息,查询条件由 Select 语句的 Where 短语构成,使用 And 与 Or 逻辑运算符可组合出复 杂的查询条件; 方法二是使用数据集的数据视图(DataView)的筛选功能,DataView 的主要方法与属性如表 13_3 所示。,若要实现模糊查询,只需要使用运算符 Like,这时可以用分好“”来代替任意多个不确定的字符,用下划线“_”代替一个不 确定的字符。例如:“s_name Like张”将查询所有张姓的学生, 而“s_name Like张_”表示查询 s_name 字段值以“张”开头,只有两个字的记录。 程序分析:13-7,13.4 二进制数据对象操作,二进制大型数据对象(Binary Large Object,BLOB)是指任何需要存入数据库的随机大块字节流数据,例如图像或声音文 件。 数据库中存放 BLOB 的字段必须是二进制类型(在 Access 中为 OLE 对象)。本节主要讨论在 ADO.NET 中如何处理 BLOB 类型的数据,把图形作为数据库的一个字段存放在数据库中,并能在图片框中显示图像。,由于 PictureBox 控件显示的是 Image 对象,不能直接绑定到 字段。为了能作 BLOB 类型的数据,需要使用 Stream 类。关于 Stream 类的介绍,在文件与流这一章中已经介绍过, MemoryStream 在内存封装 BLOB 数据,这样就能直接访问这些 封装的数据。,Stream 需要通过一个字节类型的数组执行对文件的读和操作。它包含一个内置的指针 Pointer 来指向最后读取或写入的字节位置。每个 Read 或 Write 方法调用从指针的当前位置+1 开 始。如果调用成功,则指针会按处理的字节数向后移动当前位置。 在使用 Read 或 Write 方法时,需要指定字节起始位置和最多处 理的字节数。FileStream 使用方法前面章节已经介绍过。,1 把图形文件数据写入数据库 把图形文件数据写入数据库,需要按以下步骤处理: (1) 使用 FileStream 文件对象读模式打开图形文件。 格式: FileStream 文件对象new FileStream(图文件名,FileMode.Open,FileAccess.Read); (2)定义一个字节类型的数组,数组大小为文件长度。 格式: int 文件长度(int) 文件对象名.Length; Byte 数组名new Byte文件长度;,(3) 读文件到数组。 文件对象.Read(数组,0,文件对象.Length); 文件对象.Close(); (4) 写入到数据源。 用 SQL 命令直接写入到数据源,而写入到数据集使用如下 代码: 数据集.Tables数据表.Rows记录号图形字段名数组,2从数据集读取图像数据和显示图像 从数据集读取图像数据并显示在图形框内需要使用MemoryStream,处理步骤如下: (1) 将记录内的图形数据读到字节类型数组。 写法: Byte 数组名=new Byte; 数组名数据集.Tables数据表.Rows记录号图像字段名 例如: Byte BBytesnew Byte; BBytes = objDset.Tables“stuent”.Rowsnum“s_photo”;,(2) 将字节型数组内容变成 IO.MemoryStream 数据流。 写法: System.IO.MemoryStream 内存流实例new System.IO.MemoryStream(数组名); 例如: System.IO.MemoryStream myst

温馨提示

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

评论

0/150

提交评论