- •Preface
- •Who Should Read This Book
- •Organization and Presentation
- •Contacting the Authors
- •Acknowledgments
- •Contents
- •Introduction
- •Why Microsoft .NET?
- •The Microsoft .NET Architecture
- •Internet Standards
- •The Evolution of ASP
- •The Benefits of ASP.NET
- •What Is .NET?
- •.NET Experiences
- •.NET Clients
- •.NET Services
- •.NET Servers
- •Review
- •Quiz Yourself
- •Installation Requirements
- •Installing ASP.NET and ADO.NET
- •Installing the .NET Framework SDK
- •Testing Your Installation
- •Support for .NET
- •Review
- •Quiz Yourself
- •Designing a Database
- •Normalization of Data
- •Security Considerations
- •Review
- •Quiz Yourself
- •Creating a Database
- •Creating SQL Server Tables
- •Creating a View
- •Creating a Stored Procedure
- •Creating a Trigger
- •Review
- •Quiz Yourself
- •INSERT Statements
- •DELETE Statements
- •UPDATE Statements
- •SELECT Statements
- •Review
- •Quiz Yourself
- •The XML Design Specs
- •The Structure of XML Documents
- •XML Syntax
- •XML and the .NET Framework
- •Review
- •Quiz Yourself
- •ASP.NET Events
- •Page Directives
- •Namespaces
- •Choosing a Language
- •Review
- •Quiz Yourself
- •Introducing HTML Controls
- •Using HTML controls
- •How HTML controls work
- •Intrinsic HTML controls
- •HTML Control Events
- •The Page_OnLoad event
- •Custom event handlers
- •Review
- •Quiz Yourself
- •Intrinsic Controls
- •Using intrinsic controls
- •Handling intrinsic Web control events
- •List Controls
- •Rich Controls
- •Review
- •Quiz Yourself
- •Creating a User Control
- •Adding User Control Properties
- •Writing Custom Control Methods
- •Implementing User Control Events
- •Review
- •Quiz Yourself
- •Common Aspects of Validation Controls
- •Display property
- •Type Property
- •Operator Property
- •Using Validation Controls
- •RequiredFieldValidator
- •RegularExpressionValidator
- •CompareValidator
- •RangeValidator
- •CustomValidator
- •ValidationSummaryx
- •Review
- •Quiz Yourself
- •Maintaining State Out of Process for Scalability
- •No More Cookies but Plenty of Milk!
- •Out of Process State Management
- •Review
- •Quiz Yourself
- •Introducing the Key Security Mechanisms
- •Web.config and Security
- •Special identities
- •Using request types to limit access
- •New Tricks for Forms-based Authentication
- •Using the Passport Authentication Provider
- •Review
- •Quiz Yourself
- •ASP.NET Updates to the ASP Response Model
- •Caching with ASP.NET
- •Page Output Caching
- •Absolute cache expiration
- •Sliding cache expiration
- •Fragment Caching
- •Page Data Caching
- •Expiration
- •File and Key Dependency and Scavenging
- •Review
- •Quiz Yourself
- •A Brief History of Microsoft Data Access
- •Differences between ADO and ADO.NET
- •Transmission formats
- •Connected versus disconnected datasets
- •COM marshaling versus text-based data transmission
- •Variant versus strongly typed data
- •Data schema
- •ADO.NET Managed Provider Versus SQL Managed Provider
- •Review
- •Quiz Yourself
- •Review
- •Quiz Yourself
- •Creating a Connection
- •Opening a Connection
- •Using Transactions
- •Review
- •Quiz Yourself
- •Building a Command
- •Connection property
- •CommandText property
- •CommandType property
- •CommandTimeout property
- •Appending parameters
- •Executing a Command
- •ExecuteNonQuery method
- •Prepare method
- •ExecuteReader method
- •Review
- •Quiz Yourself
- •Introducing DataReaders
- •Using DataReader Properties
- •Item property
- •FieldCount property
- •IsClosed property
- •RecordsAffected property
- •Using DataReader Methods
- •Read method
- •GetValue method
- •Get[Data Type] methods
- •GetOrdinal method
- •GetName method
- •Close method
- •Review
- •Quiz Yourself
- •Constructing a DataAdapter Object
- •SelectCommand property
- •UpdateCommand, DeleteCommand, and InsertCommand properties
- •Fill method
- •Update method
- •Dispose method
- •Using DataSet Objects
- •DataSetName property
- •CaseSensitive property
- •Review
- •Quiz Yourself
- •Constructing a DataSet
- •Tables property
- •TablesCollection Object
- •Count property
- •Item property
- •Contains method
- •CanRemove method
- •Remove method
- •Add method
- •DataTable Objects
- •CaseSensitive property
- •ChildRelations property
- •Columns property
- •Constraints property
- •DataSet property
- •DefaultView property
- •ParentRelations property
- •PrimaryKey property
- •Rows property
- •Dispose method
- •NewRow method
- •Review
- •Quiz Yourself
- •What Is Data Binding?
- •Binding to Arrays and Extended Object Types
- •Binding to Database Data
- •Binding to XML
- •TreeView Control
- •Implement the TreeView server control
- •Review
- •Quiz Yourself
- •DataGrid Control Basics
- •Binding a set of data to a DataGrid control
- •Formatting the output of a DataGrid control
- •Master/Detail Relationships with the DataGrid Control
- •Populating the Master control
- •Filtering the detail listing
- •Review
- •QUIZ YOURSELF
- •Updating Your Data
- •Handling the OnEditCommand Event
- •Handling the OnCancelCommand Event
- •Handling the OnUpdateCommand Event
- •Checking that the user input has been validated
- •Executing the update process
- •Deleting Data with the OnDeleteCommand Event
- •Sorting Columns with the DataGrid Control
- •Review
- •Quiz Yourself
- •What Is Data Shaping?
- •Why Shape Your Data?
- •DataSet Object
- •Shaping Data with the Relations Method
- •Review
- •Quiz Yourself
- •OLEDBError Object Description
- •OLEDBError Object Properties
- •OLEDBError Object Methods
- •OLEDBException Properties
- •Writing Errors to the Event Log
- •Review
- •Quiz Yourself
- •Introducing SOAP
- •Accessing Remote Data with SOAP
- •SOAP Discovery (DISCO)
- •Web Service Description Language (WSDL)
- •Using SOAP with ASP.NET
- •Review
- •Quiz Yourself
- •Developing a Web Service
- •Consuming a Web Service
- •Review
- •Quiz Yourself
- •ASP and ASP.NET Compatibility
- •Scripting language limitations
- •Rendering HTML page elements
- •Using script blocks
- •Syntax differences and language modifications
- •Running ASP Pages under Microsoft.NET
- •Using VB6 Components with ASP.NET
- •Review
- •Quiz Yourself
- •Preparing a Migration Path
- •ADO and ADO.NET Compatibility
- •Running ADO under ASP.NET
- •Early Binding ADO COM Objects in ASP.NET
- •Review
- •Quiz Yourself
- •Answers to Part Reviews
- •Friday Evening Review Answers
- •Saturday Morning Review Answers
- •Saturday Afternoon Review Answers
- •Saturday Evening Review Answers
- •Sunday Morning Review Answers
- •Sunday Afternoon Review Answers
- •What’s on the CD-ROM
- •System Requirements
- •Using the CD with Windows
- •What’s on the CD
- •The Software Directory
- •Troubleshooting
- •ADO.NET Class Descriptions
- •Coding Differences in ASP and ASP.NET
- •Retrieving a Table from a Database
- •Displaying a Table from a Database
- •Variable Declarations
- •Statements
- •Comments
- •Indexed Property Access
- •Using Arrays
- •Initializing Variables
- •If Statements
- •Case Statements
- •For Loops
- •While Loops
- •String Concatenation
- •Error Handling
- •Conversion of Variable Types
- •Index
A P P E N D I X
D
Coding Differences in ASP and ASP.NET
Retrieving a Table from a Database
How you did it with VBScript in ASP
Function GetStores(stor_id)
Dim oRS, oConn, oCmd, oParam
OConn = “provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User ID=sa;pwd=;”
Set oCmd = Server.CreateObject(“ADODB.Command”) OCmd.CommandText = “SELECT * FROM Stores WHERE [stor_id]=?” OCmd.ActiveConnection = oConn
Set oParam = oCmd.CreateParameter(“stor_id”,3,1,,stor_id) OCmd.Parameters.Append oParam
Set oRS = Server.CreateObject(“ADODB.Recordset”) ORS.Open oCmd
Set GetStores = oRS End Function
How you do it with VB .NET in ASP.NET
Function GetStores(stor_id As Integer) As DataSet
Dim oConn as New OLEDBConnection(“provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User ID=sa;pwd=;”)
Dim oCmd as New OLEDBDataAdapter(“SELECT * FROM Stores WHERE [stor_id]=?”, oConn) Dim oParam as New OLEDBParameter(“stor_id”,OLEDBType.Integer)
oParam.Value = stor_id oCmd.SelectCommand.Parameters.Add(oParam) Dim oDS As New DataSet()
oCmd.Fill(oDS, “stores”) Return oDS
End Function
356 |
Appendix D |
How you do it with C# in ASP.NET
DataSet GetStores(int stor_id) {
OleDbConnection oConn = new OleDbConnection(“provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User ID=sa;pwd=;”);
OleDbDataAdapter oCmd = new OleDbDataAdapter(“SELECT * FROM Stores WHERE [stor_id]=?”, oConn);
OleDbParameter oParam = new OleDbParameter(“stor_id”, OleDbType.Integer); oParam.Value = stor_id;
oCmd.SelectCommand.Parameters.Add(oParam); DataSet oDS = new DataSet(); oCmd.Fill(oDS, “stores”);
return oDS;
}
Displaying a Table from a Database
How you did it with VBScript in ASP
<%@ LANGUAGE=”VBScript” %> <%
Dim oRS
Function CreateTable(stor_id) Set oRS = GetStores(stor_id) Do While Not oRS.EOF
Response.Write(“<TABLE>”)
Response.Write(“<TR>”)
For Each oField in oRS.Fields Response.Write(“<TD Align = Center>”) If isNull(oField) Then
Response.Write(“ ”)
Else
Response.Write(oField.value) End If
Response.Write(“</TD>”)
Next oRS.moveNext
Response.Write(“</TR>”)
Loop Response.Write(“</TABLE>”) ORS.close
Set oRS = Nothing End Function
Function GetStores(stor_id)
Dim oRS, oConn, oCmd, oParam
OConn = “provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User ID=sa;pwd=;”
Set oCmd = Server.CreateObject(“ADODB.Command”) OCmd.CommandText = “SELECT * FROM Stores WHERE [stor_id]=?” OCmd.ActiveConnection = oConn
Coding Differences in ASP and ASP.NET |
357 |
Set oParam = oCmd.CreateParameter(“stor_id”,3,1,,stor_id) OCmd.Parameters.Append oParam
Set oRS = Server.CreateObject(“ADODB.Recordset”) ORS.Open oCmd
Set GetStores = oRS End Function
%>
<html>
<body>
<%
CreateTable(“7066”)
%>
How you do it with VB .NET in ASP.NET
<%@ Import Namespace=”System.Data” %>
<%@ Import Namespace=”System.Data.OleDB”%>
<%@ Page Language=”VB” Debug=”False” Trace=”False” %> <HTML>
<HEAD>
<SCRIPT LANGUAGE=”vb” RUNAT=”server”>
Sub Page_Load(sender as object, e as eventargs) CreateTable(7066)
End Sub
Function GetStores(stor_id As Integer) As DataSet
Dim oConn as New OLEDBConnection(“provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User ID=sa;pwd=;”)
Dim oCmd as New OLEDBDataAdapter(“SELECT * FROM Stores WHERE [stor_id]=?”,
oConn)
Dim oParam as New OLEDBParameter(“stor_id”,OLEDBType.Integer) oParam.Value = stor_id oCmd.SelectCommand.Parameters.Add(oParam)
Dim oDS As New DataSet() oCmd.Fill(oDS, “stores”) Return oDS
End Function
Sub CreateTable(stor_id as Integer)
Dim oDS As DataSet = GetStores(stor_id) grid1.DataSource = oDS.Tables(0).DefaultView grid1.DataBind()
End Sub
</SCRIPT>
</HEAD>
<BODY>
<FORM RUNAT=”server” ID=”Form1”> <ASP:DATAGRID ID=”grid1” RUNAT=”server” />
</FORM>
</BODY>
</HTML>
358 |
Appendix D |
How you do it with C# in ASP.NET
<%@ Import Namespace=”System.Data.OleDb”%> <%@ Import Namespace=”System.Data”%>
<%@ Page Language=”C#” Debug=”False” Trace=”False” %> <HTML>
<HEAD>
<SCRIPT LANGUAGE=”C#” RUNAT=”server”>
protected void Page_Load(Object sender, EventArgs E)
{
CreateTable(7066);
}
void CreateTable(int stor_id)
{
DataSet oDS = GetStores(stor_id); grid1.DataSource = oDS.Tables[0].DefaultView; grid1.DataBind();
}
DataSet GetStores(int stor_id) {
OleDbConnection oConn = new OleDbConnection(“provider=sqloledb;Data Source=(local);Initial Catalog=pubs;User ID=sa;pwd=;”);
OleDbDataAdapter oCmd = new OleDbDataAdapter(“SELECT * FROM Stores WHERE [stor_id]=?”, oConn);
OleDbParameter oParam = new OleDbParameter(“stor_id”, OleDbType.Integer); oParam.Value = stor_id;
oCmd.SelectCommand.Parameters.Add(oParam); DataSet oDS = new DataSet(); oCmd.Fill(oDS, “stores”);
return oDS;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM RUNAT=”server” ID=”Form1”> <ASP:DATAGRID ID=”grid1” RUNAT=”server” />
</FORM>
</BODY>
</HTML>
Variable Declarations
How you did it with VBScript in ASP
Dim x
Dim s
Dim s1,s2
Dim o
Set o = Server.CreateObject(“ADODB.Command”)