ASP.NET网页设计ADO.NET起步
你觉得数据库怎么样?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
StringconnectionString="server=localhost;uid=sa;pwd=;database=northwind";
SQLConnectionmyConn=newSQLConnection(connectionString);
myConn.Open();
ADOConnection
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
StringSQLStmt="SELECT*FROMCustomers";
SQLCommandmyCommand=newSQLCommand(SQLStmt,myConn);
ADOCommand
StringSQLStmt="SELECT*FROMCustomers";
ADOCommandmyCommand=newADOCommand(SQLStmt,myConn);
DataReaders
当你处置大批数据的时分,大批内存的占用会招致功能上的成绩。比方,一个毗连(connection)用传统的ADORecordset工具往读1000行数据库的纪录,就必需为这1000行纪录将内存分派给这个毗连直至这个毗连的性命周期停止。假如有1000用户在统一工夫对统一盘算机举行一样的操纵,内存被过分的利用就会成为关头性的成绩。
为懂得决这些成绩,.NET框架包含了DataReaders工具,而这个工具仅仅从数据库前往一个只读的,仅向前数据流。并且以后内存中每次仅存在一笔记录。
DataReader接口撑持各类数据源,好比干系数据和分级数据。DataReader能够合用于在运转完一条命令仅必要前往一个复杂的只读纪录集。
上面的代码片段论述了怎样声明变量指向一个DataReader工具的实例,还包含代码实行时Command工具发生的了局。当挪用Command工具实行办法时,Command工具必需已被创立和作为参数来传送。持续下面的例子:
SQLDataReader
SQLDataReadermyReader=null;
myCommand.Execute(outmyReader);
ADODataReader
ADODataReadermyReader=null;
myCommand.Execute(outmyReader);
接上去这步是一个利用DataReader的复杂格局
While(myReader.Read()){
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怎么什么也没有啊? ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
页:
[1]