asp06.htm

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

HTM
222
字号
  DELETE语句的语法格式如下:<br>
  DELETE FROM table_names [WHERE…] <br>
  例如,以下语句从students表中删除姓名为“罗亮”的记录:<br>
  DELETE FROM students WHERE name = ‘罗亮’ <br>
  &nbsp; 3. 更新数据语句UPDATE <br>
  UPDATE语句的语法格式如下:<br>
  UPDATE table_name SET Field_1=expression_1[,Field_2=expression_2…]<br>
  [FROM table1_name|view1_name[,table2_name|view2_name…]]<br>
  [WHERE…] <br>
  例如,以下语句将计算机系的学生的总分增加10:<br>
  UPDATE students SET totalscore = totalscore +10 WHERE department = ‘计算机’<br>
  6.4 存储过程<br>
  使用存储过程的优点是:更快的执行速度、降低网络流量、资源共享和安全操作、灵活的编程及维护方式。<br>
  在SQL Server 2000中创建存储过程的SQL命令是Create Procedure,其语法格式如下:<br>
  Create Procedure的语法:<br>
  CREATE PROC[EDURE] procedure_name [ ; number ] /* 定义存储过程名 */ <br>
  [ { @parameter data_type } /* 定义参数的类型 */ <br>
  [ VARYING ] [ = default ] [ OUTPUT ] ] /* 定义参数的属性 */ <br>
  [ ,...n1 ] <br>
  [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }] /* 定义存储过程的处理方式 */ 
  <br>
  [ FOR REPLICATION ] AS sql_statement [ ...n2 ] /* 执行的操作 */ <br>
  【例】在数据库Student中创建3个存储过程studentInfo、studentScore和studentUpdate。studentInfo的功能为返回学号、姓名、课程名、成绩和学分;studentScore根据学号和课程号查询该学生的姓名及指定课程的成绩;studentUpdate的功能是:首先判断所操作的表students是否存在,若不存在,则返回出错值(-1);若表存在则根据参数所指定的学生学号存在与否进行不同的操作,若给定的学号存在,则将该学号的学生信息修改为指定的其余各参数值,若给定的学号不存在, 
  则插入该学生信息;操作完毕后返回更新后的student表数据。<br>
  创建存储过程studentInfo的SQL命令如下:<br>
  &nbsp; Use Student /* 检查是否studentInfo存储过程是否已存在,若是则删除 */ <br>
  &nbsp; If Exists ( Select name From sysobjects Where name = 'studentInfo' and 
  type='P') <br>
  &nbsp;&nbsp; Drop Procedure studentInfo Go /* 创建存储过程studentInfo */ <br>
  &nbsp;&nbsp; CREATE PROCEDURE studentInfo AS <br>
  &nbsp; Select A.studentid,A.name,coursename,grade<br>
  &nbsp; From students A,courses B,grades C Where A.studentid = C.studentid and 
  B.courseid = C.courseid&nbsp; Go<br>
  创建存储过程studentScore的SQL命令如下:<br>
  &nbsp; Use Student /* 检查是否studentScore存储过程是否已存在,若是则删除 */<br>
  &nbsp; If Exists ( Select name From sysobjects Where name = 'studentScore' and 
  type='P')<br>
  &nbsp; Drop Procedure studentScore Go /* 创建存储过程studentScore */ <br>
  &nbsp; CREATE PROCEDURE studentScore ( @sid VarChar(8), @cid VarChar(6), @haveit 
  int=0 OUTPUT ) AS <br>
  &nbsp; Select @haveit = grade From students A,courses B,grades C Where A.studentid=C.studentid 
  and&nbsp; B.courseid=C.courseid and A.studentid=@sid and C.courseid=@cid GO 
  <br>
  创建存储过程studentUpdate的SQL命令如下:<br>
  &nbsp; CREATE PROCEDURE dbo.studentUpdate (@studentid varchar(10),@name varchar(10),@sex 
  &nbsp; bit,@birthday DateTime, @department VarChar(20),@totalscore int) /* 接收传入的外部参数值 
  */ <br>
  &nbsp; AS declare @row integer <br>
  &nbsp; if OBJECT_ID('students') is not null /* 判断表students是否存在 */ <br>
  &nbsp; begin /* 取得符合指定studentid值的记录数 */ <br>
  &nbsp;&nbsp; select @row=count(studentid) from students where studentid=@studentid 
  <br>
  &nbsp;&nbsp; if @row=0 /* 如记录为0,插入新记录,否则更新已存在的记录 */<br>
  &nbsp; INSERT INTO students (studentid,name,sex,birthday,department,totalscore) 
  VALUES (studentid,name,sex,birthday,department,totalscore)<br>
  else<br>
  &nbsp; UPDATE students SET name=@name,&nbsp; sex=@sex,birthday=@birthday,department=@department,totalscore=@totalscore 
  where studentid=@studentid SELECT * FROM students /* 返回表students最新信息 */<br>
  end<br>
  else<br>
  &nbsp; return –1 /* 返回不存在表students的标志信息 */ <br>
  &nbsp; RETURN<br>
  6.5 ADO.NET模型<br>
  6.5.1 ADO.NET模型<br>
  &nbsp;&nbsp;&nbsp; ADO.NET(ActiveX Data Object .NET)的是功能强大的数据访问接口,通过ADO.NET访问数据库的编程接口如图所示。 
</p>
<p align="center"><img src="image/slide6image002.PNG" width="503" height="269"></p>
<p>&nbsp;&nbsp; 从图6.14可看出,ADO.NET使用SQL Server .NET或OLE DB数据提供程序来访问数据源。 SQL Server 
  .NET和OLE DB .NET数据提供程序访问物理数据库的结构如图所示。</p>
<p align="center"><img src="image/slide6image003.PNG" width="519" height="169"></p>
<p>6.5.2 ADO.NET结构 <br>
  &nbsp;&nbsp;&nbsp; 与ADO的连接传输模式不同,ADO.NET使用不连接的传输模式。ADO.NET对象模型的两个主要成员是.NET数据提供程序和DataSet对象。.NET数据提供程序 
  ?是数据库的访问接口,负责建立连接和数据操作。ADO.NET的结构如图所示。 </p>
<p align="center"><img src="image/slide6image004.PNG" width="396" height="316"><br>
  <img src="image/slide6image005.PNG" width="104" height="63"></p>
<p>1. 数据集对象DataSet ADO.NET的主角是DataSet,它是一个内存数据库,如图所示。</p>
<p align="center"><img src="image/slide6image006.PNG" width="366" height="182"></p>
<p>&nbsp;&nbsp; DataSet提供方法对数据集中表数据进行浏览、编辑、排序、过滤或建立视图(View)。DataSet对象模型如图所示。由图可知,DataSet对象中的表(即DataTable对象)存放在表集合(DataTableCollection对象)中,通过DataTableCollection来访问表。 
</p>
<p align="center"><img src="image/slide6image007.PNG" width="393" height="369"></p>
<p>&nbsp;2. .NET数据提供程序&nbsp; ADO.NET的两个数据提供程序的功能已经介绍过了,这里讨论其对象结构。两种数据提供程序都包含Connection、Command、DataReader和DataAdapter四个对象。这些对象的作用列于表中。 
</p>
<p align="center"><img src="image/slide6image008.PNG" width="629" height="264"></p>
<p>&nbsp;3. ADO.NET命名空间 .NET框架的命名空间(Namespace),相当于Library(*.dll),它包含了应用程序将会使用的动态链接库。表列出的是基本类。 
</p>
<p align="center"><img src="image/slide6image009.PNG" width="499" height="168"></p>
<p>例如,若在程序中访问SQL Server 2000,则需要使用以下语句:<br>
  &lt;%@ Import Namespace=&quot;System.Data&quot; %&gt;<br>
  &lt;%@ Import Namespace=&quot;System.Data.SqlClient&quot; %&gt;<br>
  若在程序中访问OLE数据源或SQL Server 6.5或更前的版本,则需要使用以下语句:<br>
  &lt;%@ Import Namespace=&quot;System.Data&quot; %&gt;<br>
  &lt;%@ Import Namespace=&quot;System.Data.OleDb&quot; %&gt;<br>
  可将ADO.NET命名空间下的类分为以下三组:<br>
  (1) SQL数据库常用的类<br>
  (2) OLE DB数据库常用的类<br>
  (3) 数据集及相关类 6.5.3 ADO.NET数据库操作使用ADO.NET的类来执行常规数据库操作,包括查询、添加、更新和删除数据等。<br>
  6.5.4 数据显示<br>
  一个完整的Web数据库应用是由数据展示层、业务逻辑层和数据层组成的,如图所示。</p>
<p align="center"><img src="image/slide6image010.PNG" width="383" height="365"></p>
<p>6.5.5 VS.NET数据控件<br>
  &nbsp;&nbsp;&nbsp; VS.NET的数据库访问控件位于“工具箱”的“数据”工具箱中。注意到在VS.NET中DataReader类没有对应的可视化控件 
  <br>
  6.5.6 VS.NET数据管理 <br>
  &nbsp;&nbsp;&nbsp; VS.NET中集成了对数据的管理操作,使得开发者不必切换到数据库管理系统中就 可以方便地进行对数据库中的表进行插入、删除记录,创建和修改存储过程等操作。 
  <br>
  6.5.7 ASP.NET数据库应用程序开发<br>
  &nbsp;&nbsp;&nbsp; 在ASP.NET中开发数据库应用程序,既可以使用VS.NET提供的数据控件,也可以 通过编写程序代码实现对数据库的操作。</p>
<p align="center"><a href="index.htm">回首页</a></p>
</body>
</html>

⌨️ 快捷键说明

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