asp07.htm

来自「VB.NET网络编程指南 书籍语言: 简体中文 书籍类型」· HTM 代码 · 共 313 行 · 第 1/2 页

HTM
313
字号
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>数据库编程</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<p align="center">第7章 数据库编程</p>
<p>7.1 连接数据库 <br>
  &nbsp;&nbsp;&nbsp; 操作数据库的第一步是建立与数据库的连接。SqlConnection和OleDbConnection类对象定义的语法格式为:<br>
  Dim 对象名 As New SqlConnection([ConnectionString])<br>
  Dim 对象名 As New OleDbConnection([ConnectionString]) <br>
  &nbsp;&nbsp;&nbsp;&nbsp; 参数ConnectionString是连接串,用于指定数据连接方式。创建Connection对象后,就可使用Connection对象的属性和方法。Connection对象的常 
  用属性和方法分别列于表中。表中的ConnectionString属性用于获取或设置与数据库的连接字符串。<br>
  &nbsp;&nbsp;&nbsp;&nbsp; 连接OLE DB数 据源,ConnectionString属性通常包括以下参数:连接OLE DB数据源,ConnectionString属性通常包括以下参数:<br>
  Provider:设置数据源的OLE DB驱动程序。 <br>
  Data Source:设置数据源的实际路径。<br>
  Password:设置登录数据库时所使用的密码。<br>
  User ID: 设置登录数据库时所使用的帐号。<br>
  Data Source: 设置需连接的数据库服务器名。<br>
  Initial Catalog:设置连接的数据库名称。<br>
  Integrated Security:服务器的安全性设置,是否使用信任连接。<br>
  Workstation Id: 数据库客户端标识。<br>
  Packet Size:获取与SQL Server通信的网络数据包的大小,单位为字节。<br>
  User ID:登录SQL Server的帐号。<br>
  Password(Pwd):登录SQL Server的密码。<br>
  Connection Timeout:设置SqlConnection对象连接SQL数据库服务器的超时时间。 </p>
<p align="center"><img src="image/slide7image001.PNG" width="595" height="330"><br>
  <img src="image/slide7image002.PNG" width="594" height="178"></p>
<p>Connection对象的事件有以下两个:<br>
  &nbsp; (1) InfoMessage:在.NET数据提供程序发送警告或信息时触发该事件。<br>
  &nbsp; (2) StateChange:当数据连接状态改变时(即调用Open()或Close()方法)触发该事件。例如,以下代码打开与Access数据库的连接:<br>
  &lt;%@ Import Namespace=&quot;System.Data&quot; %&gt;<br>
  &lt;%@ Import Namespace=&quot;System.Data.OleDb&quot; %&gt;<br>
  &lt;SCRIPT Language=&quot;VB&quot; Runat=&quot;Server&quot;&gt; <br>
  Sub Page_Load(Sender As Object, e As EventArgs)<br>
  &nbsp; Dim conn As OleDbCOnnection()'定义Connetction对象设置Connetction对象的ConnectionString属性<br>
  &nbsp; conn.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0; Data 
  Source=&quot; &amp;_&nbsp; Server.MapPath(&quot;Student.mdb&quot;)<br>
  &nbsp; conn.Open()'打开与数据库的连接 <br>
  End Sub <br>
  &lt;/SCRIPT&gt;<br>
  以下代码打开与SQL Server 2000数据库的连接:<br>
  &lt;%@ Import Namespace=&quot;System.Data&quot; %&gt; <br>
  &lt;%@ Import Namespace=&quot;System.Data.SqlClient&quot; %&gt; <br>
  &lt;SCRIPT Language=&quot;VB&quot; Runat=&quot;Server&quot;&gt; <br>
  Sub Page_Load(Sender As Object, e As EventArgs)<br>
  &nbsp; Dim conn As SqlCOnnection() '定义Connetction对象 <br>
  &nbsp; conn.ConnectionString = &quot;Data Source = localhost; Integrated Security=SSPI&quot; 
  &amp;_ &quot;Catalog=webdata; Packet Size=4096&quot;<br>
  &nbsp; conn.Open() '打开与数据库的连接 <br>
  End Sub <br>
  &lt;/SCRIPT&gt; <br>
  &nbsp;&nbsp;&nbsp; 若不再需要访问数据库,则可在代码中加入conn.Close()语句,关闭与数据库的连接。<br>
  7.2 执行SQL命令 <br>
  7.2.1 Command对象 <br>
  创建Command对象的语法格式为:<br>
  &nbsp; Dim 对象名 As New OleDbCommand(cmdText,connection) 'OLE DB数据源<br>
  &nbsp; Dim 对象名 As New SqlCommand(cmdText,connection)'SQL Server数据库 Command对象的主要属性和方法分别列于下表:</p>
<p align="center"><img src="image/slide7image003.PNG" width="615" height="261"><br>
  <img src="image/slide7image004.PNG" width="612" height="260"></p>
<p>&nbsp;&nbsp; Command对象的CommandType属性用于设置命令的类别:可以是存储过程、表名或SQL语句。当将该属性值设为CommandType.TableDirect时,要求CommandText的值必须是表名而不能 
  是SQL语句。例如:<br>
  Dim cmd As New OleDbCommand()<br>
  cmd.CommandText = &quot;students&quot; <br>
  cmd.CommandType = Command.TableDirect<br>
  cmd.Connection = conn<br>
  使用Command对象的ExecuteNonQuery()方法可执行对数据库的更新操作,包括 添加、修改和删除记录。 <br>
  【例】向students数据表中加入一条记录,各字段值分别为:“100020”、“王霞”、 False、1980-10-20、“计算机”、102。程序代码如下:<br>
  &lt;%@ Import Namespace=&quot;System.Data&quot; %&gt;<br>
  &lt;%@ Import Namespace=&quot;System.Data.OleDb&quot; %&gt;<br>
  &lt;SCRIPT Language=&quot;VB&quot; Runat=&quot;Server&quot;&gt;<br>
  Sub Page_Load(Sender As Object, e As EventArgs)<br>
  Dim conn As New OleDbConnection()<br>
  conn.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&quot; 
  &amp; _ Server.MapPath(&quot;Student.mdb&quot;)<br>
  conn.Open()<br>
  Dim cmd As New OleDbCommand(&quot;Insert into students values('100020','王霞',_ 
  False,'1980-10-20','计算机',102)&quot;,conn)<br>
  cmd.ExecuteNonQuery()'执行SQL语句<br>
  conn.Close()'关闭数据连接<br>
  End Sub<br>
  &lt;/SCRIPT&gt;<br>
  &lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;向数据表中加入记录&lt;/TITLE&gt;&lt;/HEAD&gt;<br>
  &lt;BODY&gt;&lt;/BODY&gt;&lt;/HTML&gt;<br>
  &nbsp;&nbsp;&nbsp; 例如若要将学号为“100020”的学生的总学分增加8,则将例中的Insert语句换为:<br>
  Update students Set totalscore=totalscore+8 where studentid='100020' <br>
  &nbsp;&nbsp;&nbsp; 若要删除学号为“100020”的记录,则将例中的Insert语句换为:<br>
  Delete from students where studentid='100020 <br>
  7.2.2 DataAdapter对象 <br>
  &nbsp;&nbsp;&nbsp; 定义DataAdapter对象的语法格式有4种:<br>
  &nbsp; ① Dim 对象名 As New OleDbDataAdapter()<br>
  &nbsp; ② Dim 对象名 As New OleDbDataAdapter (OleDbCommand对象)<br>
  &nbsp; ③ Dim 对象名 As New OleDbDataAdapter (SQL命令串,OleDbConnection对象)<br>
  &nbsp; ④ Dim 对象名 As New OleDbDataAdapter (SQL命令串,连接字符串) 例如,以下代码使用格式①创建DataAdapter对象:<br>
  Dim conn As New OleDbConnection()<br>
  Dim cmd As New OleDbCommand()<br>
  conn.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&quot; 
  &amp;_ Server.MapPath(&quot;Student.mdb&quot;)<br>
  conn.Open()<br>
  cmd.Connection = conn<br>
  cmd.CommandText = &quot;Select * from students&quot; <br>
  Dim Adpt As New OleDbDataAdapter(cmd)<br>
  &nbsp;&nbsp;&nbsp; 再如,以下代码使用格式③创建DataAdapter对象:<br>
  Dim conn As New OleDbConnection()<br>
  conn.ConnectionString = &quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source=&quot; 
  &amp;_ Server.MapPath(&quot;Student.mdb&quot;)<br>
  conn.Open() Dim Adpt As New OleDbDataAdapter(&quot;Select * from students&quot;,conn)<br>
  &nbsp;&nbsp;&nbsp;&nbsp; 格式①是在创建了DataAdapter对象后,再通过赋予其连接、SQL命令等对象属性值,格式 ④则不需先建立OleDbConnection和OleDbCommand对象即直接创建,例如:<br>
  Dim Adpt As New OleDbDataAdapter(&quot;Select * from students&quot;,_&quot;Provider=Microsoft.Jet.OLEDB.4.0;DataSource=&quot; 
  &amp; Server.MapPath(&quot;Student.mdb&quot;)) <br>
  &nbsp;&nbsp;&nbsp; DataAdapter对象的常用属性、方法和事件分别列于表中。</p>
<p align="center"><img src="image/slide7image005.PNG" width="582" height="127"><br>
  <img src="image/slide7image006.PNG" width="583" height="142"></p>
<p>&nbsp;&nbsp;&nbsp; 由表可知,DataAdapter对象有两个常用方法:Fill()用于新增或更新DataSet中的记录;当新增、修改或删除DataSet中的记录时,并需要更改数据源时,使用Update()方法。</p>
<p align="center"> <img src="image/slide7image007.PNG" width="583" height="126"></p>
<p>&nbsp; FillError事件的参数为FillErrorEventArgs,该参数的值有以下几种:<br>
  &nbsp; Continue:获取或设置发生错误时是否继续将数据置入DataSet对象。<br>
  &nbsp; DataTable:获取发生错误时正在置入数据的数据表名。<br>
  &nbsp; Errors:获取正在处理的错误。<br>
  &nbsp; Values:获取发生错误时,正在更新的数据行。<br>
  &nbsp;&nbsp;&nbsp;&nbsp; RowUpdated事件参数,对OLE DB数据库为OleDbRowUpdatedEventArgs,对SQL 
  Server数据库为 SqlRowUpdatedEventArgs;RowUpdating事件参数,对OLE DB数据库为OleDbRowUpdatingEventArgs,对SQL&nbsp; 
  Server数据库为SqlRowUpdatingEventArgs。它们都有以下常用属性:<br>
  &nbsp; Command:获取调用Update()方法时执行的Command对象。<br>
  &nbsp; Errors:获取执行SQL命令时,.NET数据提供程序所产生的错误。<br>
  &nbsp; RecordsAffected:获取被Delete、Insert或Update等命令影响的行数。<br>
  &nbsp; Row:获取Update()方法所发送的数据行。<br>
  &nbsp; StatementType:获取Command对象执行的SQL命令类型。返回值可能为:Select、Insert 、Delete和 Update。Status:获取更新状态。<br>
  7.3使用DataReader对象访问数据<br>
  7.3.1 DataReader对象的属性和方法 DataReader对象的属性和方法分别列于表中。</p>
<p align="center"><img src="image/slide7image008.PNG" width="594" height="151"><br>
  <img src="image/slide7image009.PNG" width="592" height="323"> </p>
<p>7.3.2 使用DataReader对象访问数据 <br>
  &nbsp;&nbsp;&nbsp; 1. 基本的数据访问 使用DataReader对象读取数据的步骤如下:使用Connection对象创建数据连接。使用Command对象的ExecuteReader()方法执行SQL查询或存储过程,创建DataReader 
  对象。成功创建该对象后,可使用其属性和方法访问数据。 <br>
  &nbsp;&nbsp; 2. 带参数的数据访问 Parameters参数集合(即ParametersCollection)包含以下属性: <br>
  &nbsp;&nbsp; (1) Count <br>
  &nbsp;&nbsp; (2) Item({index,parameterName})<br>
  &nbsp;&nbsp; (3) Clear() <br>
  &nbsp;&nbsp; (4) Add(parameterName,dbType,size,sourceColumn<br>
  &nbsp;&nbsp; (5) IndexOf(parameterName) <br>
  &nbsp;&nbsp; (6) Remove(parameterName) <br>
  &nbsp;&nbsp; (7) DbType<br>
  &nbsp;&nbsp; (8) Direction <br>
  &nbsp;&nbsp; (9)Value <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在SQL语句中,若操作的是OLE DB数据源,则参数以问号“?”标识,若操作的是SQL Server或7以上版本,则参数以“@参数名”标识。 
  <br>
  7.4.1 DataSet对象模型<br>
  &nbsp;&nbsp;&nbsp;&nbsp; DataSet采用不连接的传输模式访问数据源,图表示了DataSet对象与其他对象之间的关系。 DataSet对象与其他对象的关系只有将DataSet对象的内容更新至数据源时,才会对实际的数据源进行操作。</p>
<p align="center"><img src="image/slide7image010.PNG" width="317" height="194"></p>
<p align="left">7.4.2 DataSet对象<br>
  &nbsp;&nbsp;&nbsp;&nbsp; DataSet对象包括3个集合:DataTableCollection、DataRowCollection和 
  DataColumnCollection。DataSet对象的结构如图所示。</p>
<p align="center"><img src="image/slide7image011.PNG" width="506" height="309"></p>
<p>&nbsp;&nbsp; 1. DataSet对象定义 创建DataSet对象的语法格式为: ① Dim 对象名 As New DataSet() ② 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?