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>
操作数据库的第一步是建立与数据库的连接。SqlConnection和OleDbConnection类对象定义的语法格式为:<br>
Dim 对象名 As New SqlConnection([ConnectionString])<br>
Dim 对象名 As New OleDbConnection([ConnectionString]) <br>
参数ConnectionString是连接串,用于指定数据连接方式。创建Connection对象后,就可使用Connection对象的属性和方法。Connection对象的常
用属性和方法分别列于表中。表中的ConnectionString属性用于获取或设置与数据库的连接字符串。<br>
连接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>
(1) InfoMessage:在.NET数据提供程序发送警告或信息时触发该事件。<br>
(2) StateChange:当数据连接状态改变时(即调用Open()或Close()方法)触发该事件。例如,以下代码打开与Access数据库的连接:<br>
<%@ Import Namespace="System.Data" %><br>
<%@ Import Namespace="System.Data.OleDb" %><br>
<SCRIPT Language="VB" Runat="Server"> <br>
Sub Page_Load(Sender As Object, e As EventArgs)<br>
Dim conn As OleDbCOnnection()'定义Connetction对象设置Connetction对象的ConnectionString属性<br>
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=" &_ Server.MapPath("Student.mdb")<br>
conn.Open()'打开与数据库的连接 <br>
End Sub <br>
</SCRIPT><br>
以下代码打开与SQL Server 2000数据库的连接:<br>
<%@ Import Namespace="System.Data" %> <br>
<%@ Import Namespace="System.Data.SqlClient" %> <br>
<SCRIPT Language="VB" Runat="Server"> <br>
Sub Page_Load(Sender As Object, e As EventArgs)<br>
Dim conn As SqlCOnnection() '定义Connetction对象 <br>
conn.ConnectionString = "Data Source = localhost; Integrated Security=SSPI"
&_ "Catalog=webdata; Packet Size=4096"<br>
conn.Open() '打开与数据库的连接 <br>
End Sub <br>
</SCRIPT> <br>
若不再需要访问数据库,则可在代码中加入conn.Close()语句,关闭与数据库的连接。<br>
7.2 执行SQL命令 <br>
7.2.1 Command对象 <br>
创建Command对象的语法格式为:<br>
Dim 对象名 As New OleDbCommand(cmdText,connection) 'OLE DB数据源<br>
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> Command对象的CommandType属性用于设置命令的类别:可以是存储过程、表名或SQL语句。当将该属性值设为CommandType.TableDirect时,要求CommandText的值必须是表名而不能
是SQL语句。例如:<br>
Dim cmd As New OleDbCommand()<br>
cmd.CommandText = "students" <br>
cmd.CommandType = Command.TableDirect<br>
cmd.Connection = conn<br>
使用Command对象的ExecuteNonQuery()方法可执行对数据库的更新操作,包括 添加、修改和删除记录。 <br>
【例】向students数据表中加入一条记录,各字段值分别为:“100020”、“王霞”、 False、1980-10-20、“计算机”、102。程序代码如下:<br>
<%@ Import Namespace="System.Data" %><br>
<%@ Import Namespace="System.Data.OleDb" %><br>
<SCRIPT Language="VB" Runat="Server"><br>
Sub Page_Load(Sender As Object, e As EventArgs)<br>
Dim conn As New OleDbConnection()<br>
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
& _ Server.MapPath("Student.mdb")<br>
conn.Open()<br>
Dim cmd As New OleDbCommand("Insert into students values('100020','王霞',_
False,'1980-10-20','计算机',102)",conn)<br>
cmd.ExecuteNonQuery()'执行SQL语句<br>
conn.Close()'关闭数据连接<br>
End Sub<br>
</SCRIPT><br>
<HTML><HEAD><TITLE>向数据表中加入记录</TITLE></HEAD><br>
<BODY></BODY></HTML><br>
例如若要将学号为“100020”的学生的总学分增加8,则将例中的Insert语句换为:<br>
Update students Set totalscore=totalscore+8 where studentid='100020' <br>
若要删除学号为“100020”的记录,则将例中的Insert语句换为:<br>
Delete from students where studentid='100020 <br>
7.2.2 DataAdapter对象 <br>
定义DataAdapter对象的语法格式有4种:<br>
① Dim 对象名 As New OleDbDataAdapter()<br>
② Dim 对象名 As New OleDbDataAdapter (OleDbCommand对象)<br>
③ Dim 对象名 As New OleDbDataAdapter (SQL命令串,OleDbConnection对象)<br>
④ Dim 对象名 As New OleDbDataAdapter (SQL命令串,连接字符串) 例如,以下代码使用格式①创建DataAdapter对象:<br>
Dim conn As New OleDbConnection()<br>
Dim cmd As New OleDbCommand()<br>
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
&_ Server.MapPath("Student.mdb")<br>
conn.Open()<br>
cmd.Connection = conn<br>
cmd.CommandText = "Select * from students" <br>
Dim Adpt As New OleDbDataAdapter(cmd)<br>
再如,以下代码使用格式③创建DataAdapter对象:<br>
Dim conn As New OleDbConnection()<br>
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="
&_ Server.MapPath("Student.mdb")<br>
conn.Open() Dim Adpt As New OleDbDataAdapter("Select * from students",conn)<br>
格式①是在创建了DataAdapter对象后,再通过赋予其连接、SQL命令等对象属性值,格式 ④则不需先建立OleDbConnection和OleDbCommand对象即直接创建,例如:<br>
Dim Adpt As New OleDbDataAdapter("Select * from students",_"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="
& Server.MapPath("Student.mdb")) <br>
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> 由表可知,DataAdapter对象有两个常用方法:Fill()用于新增或更新DataSet中的记录;当新增、修改或删除DataSet中的记录时,并需要更改数据源时,使用Update()方法。</p>
<p align="center"> <img src="image/slide7image007.PNG" width="583" height="126"></p>
<p> FillError事件的参数为FillErrorEventArgs,该参数的值有以下几种:<br>
Continue:获取或设置发生错误时是否继续将数据置入DataSet对象。<br>
DataTable:获取发生错误时正在置入数据的数据表名。<br>
Errors:获取正在处理的错误。<br>
Values:获取发生错误时,正在更新的数据行。<br>
RowUpdated事件参数,对OLE DB数据库为OleDbRowUpdatedEventArgs,对SQL
Server数据库为 SqlRowUpdatedEventArgs;RowUpdating事件参数,对OLE DB数据库为OleDbRowUpdatingEventArgs,对SQL
Server数据库为SqlRowUpdatingEventArgs。它们都有以下常用属性:<br>
Command:获取调用Update()方法时执行的Command对象。<br>
Errors:获取执行SQL命令时,.NET数据提供程序所产生的错误。<br>
RecordsAffected:获取被Delete、Insert或Update等命令影响的行数。<br>
Row:获取Update()方法所发送的数据行。<br>
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>
1. 基本的数据访问 使用DataReader对象读取数据的步骤如下:使用Connection对象创建数据连接。使用Command对象的ExecuteReader()方法执行SQL查询或存储过程,创建DataReader
对象。成功创建该对象后,可使用其属性和方法访问数据。 <br>
2. 带参数的数据访问 Parameters参数集合(即ParametersCollection)包含以下属性: <br>
(1) Count <br>
(2) Item({index,parameterName})<br>
(3) Clear() <br>
(4) Add(parameterName,dbType,size,sourceColumn<br>
(5) IndexOf(parameterName) <br>
(6) Remove(parameterName) <br>
(7) DbType<br>
(8) Direction <br>
(9)Value <br>
在SQL语句中,若操作的是OLE DB数据源,则参数以问号“?”标识,若操作的是SQL Server或7以上版本,则参数以“@参数名”标识。
<br>
7.4.1 DataSet对象模型<br>
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>
DataSet对象包括3个集合:DataTableCollection、DataRowCollection和
DataColumnCollection。DataSet对象的结构如图所示。</p>
<p align="center"><img src="image/slide7image011.PNG" width="506" height="309"></p>
<p> 1. DataSet对象定义 创建DataSet对象的语法格式为: ① Dim 对象名 As New DataSet() ②
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?