仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1244|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页设计ADO.NET起步

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:37:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你觉得数据库怎么样?adoADO.NET被办理的供应者可以在这些OLEDB供应者下事情。
驱动程序Driver
供应者Provider
SQLOLEDB
SQLOLEDBProvider
MSDAORA
OracleOLEDBProvider
JOLT
JetOLEDBProvider
MSDASQL/SQLServerODBC
SQLServerODBCDriverviaOLEDBforODBCProvider
MSDASQL/JetODBC
JetODBCDriverviaOLEDBProviderforODBCProvider
如今ADO.NET还不撑持MSDASQL/OracleODBCDriver(ORACLEOLEDBDRIVERFORODBC)
ADO.NET的中心组件:
Connections--毗连和办理数据库事件。
Commands--向数据库发送的命令。
DataReaders--间接读取流数据。
DateSets和DateSetCommands--对驻留内存中的数据举行存储和操纵.
中心的ADO.NET功效基础上能够被归纳综合为以下内容:
Connection工具在Web页面和数据库间创建毗连。Commands工具向数据库供应者收回命令,前往的了局以一种流的体例贯串于这些毗连中。了局集能够用DataReaders疾速的读取,也能够贮存到驻留内存的DateSets工具中,然后经由过程DateSetCommands工具让用户在数据会合会见和操纵纪录。开辟者能够用过DateSet内置的办法在基本的数据源上去向理数据集。
为了利用.NET框架中的被办理供应者,必要把上面的名空间(namespaces)包含到.aspx页面中。
SQL被办理的供应者:
<%@ImportNamespace="System.Data.SQL"%>
ADO被办理的供应者:
<%@ImportNamespace="System.Data.ADO"%>
Connections
微软在.NET框架中供应了两个Connection工具以创建毗连到特定的数据库:SQLConnection和ADOConnection。Connection工具能在已创立的毗连上经由过程挪用open的办法来被明白的翻开毗连。上面的代码片段演示了用任一供应者创立和翻开毗连。
SQLConnection
[C#]
StringconnectionString="server=localhost;uid=sa;pwd=;database=northwind";
SQLConnectionmyConn=newSQLConnection(connectionString);
myConn.Open();
ADOConnection
[C#]
StringconnectionString="Provider=SQLOLEDB.1;DataSource=localhost;uid=sa;pwd=;InitialCatalog=Northwind;"
ADOConnectionmyConn=newADOConnection(connectionString);
myConn.Open();

Commands
在创建了毗连今后,下一步要做的就是对数据库运转的SQL语句。最复杂间接的办法是经由过程ADO和SQL命令工具来完成。
Command工具能够赐与供应者一些该怎样操纵数据库信息的指令。
一个命令(Command)能够用典范的SQL语句来表达,包含实行选择查询(selectquery)来前往纪录集,实行举动查询(actionquery)来更新(增添、编纂或删除)数据库的纪录,大概创立并修正数据库的表布局。固然命令(Command)也能够传送参数并前往值。
Commands能够被明白的界定,大概挪用数据库中的存储历程。接上去的小段代码证实了在创建毗连以后怎样往收回一个Select命令。
SQLCommand
[C#]
StringSQLStmt="SELECT*FROMCustomers";
SQLCommandmyCommand=newSQLCommand(SQLStmt,myConn);

ADOCommand
[C#]
StringSQLStmt="SELECT*FROMCustomers";
ADOCommandmyCommand=newADOCommand(SQLStmt,myConn);
DataReaders
当你处置大批数据的时分,大批内存的占用会招致功能上的成绩。比方,一个毗连(connection)用传统的ADORecordset工具往读1000行数据库的纪录,就必需为这1000行纪录将内存分派给这个毗连直至这个毗连的性命周期停止。假如有1000用户在统一工夫对统一盘算机举行一样的操纵,内存被过分的利用就会成为关头性的成绩。
为懂得决这些成绩,.NET框架包含了DataReaders工具,而这个工具仅仅从数据库前往一个只读的,仅向前数据流。并且以后内存中每次仅存在一笔记录。
DataReader接口撑持各类数据源,好比干系数据和分级数据。DataReader能够合用于在运转完一条命令仅必要前往一个复杂的只读纪录集。
上面的代码片段论述了怎样声明变量指向一个DataReader工具的实例,还包含代码实行时Command工具发生的了局。当挪用Command工具实行办法时,Command工具必需已被创立和作为参数来传送。持续下面的例子:
SQLDataReader
[C#]
SQLDataReadermyReader=null;
myCommand.Execute(outmyReader);
ADODataReader
[C#]
ADODataReadermyReader=null;
myCommand.Execute(outmyReader);
接上去这步是一个利用DataReader的复杂格局
[C#]
While(myReader.Read()){
 [C#]
While(myReader.Read()){
   //doyourthingwiththecurrentrowhere
}
上面的例子展现了迄今为止我们所会商的内容:创建一个到SQL数据源的毗连,关于毗连的发送select命令,用DataReader工具来保留前往的了局,然后经由过程轮回DataReader获得数据。
上面是用C#写的完全代码。
<%@ImportNamespace="System.Data"%>
<%@ImportNamespace="System.Data.SQL"%>
<html>
<head>
<scriptlanguage="C#"runat="server">
publicSQLDataReadermyReader;
publicStringhtml;
protectedvoidPage_Load(ObjectSrc,EventArgsE){
   SQLConnectionmySQLConnection=newSQLConnection("server=localhost;uid=sa;pwd=;database=northwind");
   SQLCommandmySQLCommand=newSQLCommand("select*fromcustomers",mySQLConnection);
   try{
      mySQLConnection.Open();
      mySQLCommd.Execute(outmyReader);
 .Execute(outmyReader);
      html="<Table>";
      html+="<TR>";
      html+="<TD><B>CustomerID</B> </TD>";
      html+="<TD><B>CompanyName</B></TD>";
      html+="</TR>";
      while(myReader.Read()){
         html+="<TR>";
         html+="<TD+myReader["CustomerID"].ToString()+"</TD>";
 +myReader["CustomerID"].ToString()+"</TD>";
         html+="<TD>"+myReader["CompanyName"].ToString()+"</TD>";
         html+="</TR>";
      }
      html+="</Table>";
   }
   catch(Exceptione){
      html=e.ToString();
   }
   finally{
      meader.Close();
 ader.Close();
      mySQLConnection.Close();
   }
   Response.Write(html);
}
</script>
</head>
</html>
注重,真实的捕捉块已包含在"try...catch"语句中了。这供应了一些处置毗连时呈现非常的办法。在“finally”块中的代码老是会被实行,不论是否已实行的是“try”或“catch”块,以是它酿成封闭reader和conncetion工具的逻辑地位。
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊?
老尸 该用户已被删除
沙发
发表于 2015-1-17 14:10:14 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
乐观 该用户已被删除
板凳
发表于 2015-1-20 19:09:05 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
再见西城 该用户已被删除
地板
发表于 2015-1-29 15:31:16 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
海妖 该用户已被删除
5#
发表于 2015-2-6 02:22:36 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
分手快乐 该用户已被删除
6#
发表于 2015-3-4 10:54:40 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-11 18:28:59 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
因胸联盟 该用户已被删除
8#
发表于 2015-3-19 07:38:20 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
山那边是海 该用户已被删除
9#
发表于 2015-3-27 14:11:05 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表