asp向asp.net應(yīng)用程序的轉(zhuǎn)變過程
發(fā)表時(shí)間:2024-05-31 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]下面示例中的第一個(gè)代碼塊對于某類 ASP 應(yīng)用程序是很典型的,該類應(yīng)用程序使用 ADO 讀取和操作從單個(gè) SQL 查詢返回的記錄集。它使用 ADO Recordset 對象讀取從用 Microsoft Access 提供的 Northwind 示例數(shù)據(jù)庫返回的數(shù)據(jù)記錄。這些代碼將包含在具有 .as...
下面示例中的第一個(gè)代碼塊對于某類 ASP 應(yīng)用程序是很典型的,該類應(yīng)用程序使用 ADO 讀取和操作從單個(gè) SQL 查詢返回的記錄集。它使用 ADO Recordset 對象讀取從用 Microsoft Access 提供的 Northwind 示例數(shù)據(jù)庫返回的數(shù)據(jù)記錄。這些代碼將包含在具有 .asp 文件擴(kuò)展名的文件中。
[Visual Basic]
<%@LANGUAGE=VBSCRIPT%>
<!
This ASP example uses ADO to read records from a database and print two
fields from all returned records to an ASP page. Connection to the Northwind database is through an ODBC system data source (DSN.
>
<html>
<body>
<%
dim ADOconn, ADOrs, sqlstr
sqlstr="SELECT * FROM Employees;"
set ADOconn = Server.CreateObject("ADODB.Connection")
ADOconn.Open "DSN = Test"
set ADOrs = ADOconn.execute(sqlstr)
if ADOrs.BOF and ADOrs.EOF then ' Query didn't return any records.
Response.Write("No Records.")
else
ADOrs.MoveFirst
Do While Not ADOrs.EOF
Response.Write(ADOrs("FirstName") & " " _
& ADOrs("LastName") & "<br>")
ADOrs.MoveNext
Loop
Response.Write("<p>End of data.")
end if
ADOrs.close
set ADOrs = nothing
%>
</body>
</html>
下面的示例闡釋將前面示例轉(zhuǎn)換為 ASP.NET 應(yīng)用程序所需的最低程度的更改。為了符合新的 Visual Basic 語法,大多數(shù)的更改都是必要的。此文件可以用 .aspx 文件擴(kuò)展名重命名,并且將與 ASP.NET 一起運(yùn)行。修改后的代碼行以粗體顯示。注意,在第一行上添加了具有 aspcompat=true 屬性的 <%@ Page > 指令。
[Visual Basic]
<%@Page aspcompat=true Language = VB%>
<!
This example uses ADO to read records from a database and print two
fields from all records in the database to an ASP.NET page.
The database is located on the server and connection is through an ODBC system data source (DSN.
>
<html>
<body>
<%
dim objConn, rs, sqlstr
sqlstr="SELECT * FROM Employees;"
objConn = Server.CreateObject("ADODB.Connection") ' Set removed.
objConn.Open("DSN=TEST") ' Parentheses added.
rs = objConn.execute(sqlstr) ' Set statement removed.
Response.Write("<p>ADO Test</p>")
if rs.BOF and rs.EOF then ' Query didn't return any records.
Response.Write("No Records")
else
rs.MoveFirst
Do While Not rs.EOF
' Specify Value property.
Response.Write(rs("FirstName").Value _
& " " & rs("LastName").Value & "<br>")
rs.MoveNext
Loop
Response.Write("<p>End of data")
end if
rs.close
rs = nothing ' Set statement removed.
%>
下一個(gè)示例是一個(gè) ASP.NET 應(yīng)用程序,該程序使用 ADO.NET 從與前面示例相同的 Northwind 數(shù)據(jù)庫讀取記錄。這些代碼生成的輸出等效于前面示例的輸出,而且已被修改以符合 ASP.NET 代碼塊約定。
該示例創(chuàng)建一個(gè) ADO.NET DataSet 對象,在此情況下此對象包含一個(gè)數(shù)據(jù)表,而該數(shù)據(jù)表的使用方式與 ADO 記錄集的使用方式幾乎相同。請注意,數(shù)據(jù)集可以由一個(gè)或多個(gè)構(gòu)成內(nèi)存駐留數(shù)據(jù)庫的 DataTables、DataRelations 和 Constraints 的集合組成,因此 ADO.NET 數(shù)據(jù)集比 ADO 記錄集靈活得多。
為了使用 ADO.NET,需要導(dǎo)入 System.Data 和 System.Data.OleDb 命名空間。如果數(shù)據(jù)源是 SQL Server 數(shù)據(jù)庫,則導(dǎo)入 System.Data.SqlClient 命名空間而不是 System.Data.OleDb。有關(guān)使用 ADO 和 SQL .NET 數(shù)據(jù)提供程序的連接對象的詳細(xì)信息,請參見管理連接。
[Visual Basic]
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<!
This example uses ADO.NET to read records from a database and print two
fields from all returned records to an ASP.NET page. The database
is located on the local server.
>
<html>
<Script Language=VB Runat=Server>
Sub Page_Load(Sender As Object, e As EventArgs)
Dim MyConnection As OleDbConnection
Dim MyCommand As OleDbDataAdapter
dim MyDataset As DataSet
dim MyTable As DataTable
dim loop1, numrows As Integer
dim sqlstr As String
sqlstr = "SELECT * FROM Employees;"
' Create a connection to the data source.
MyConnection = New OleDbConnection("Provider=SQLOLEDB;" _
& "server=localhost;"Integrated Security=SSPI;" _
& "Initial Catalog=Northwind")
' Create a Command object with the SQL statement.
MyCommand = New OleDbDataAdapter(sqlstr, MyConnection)
' Fill a DataSet with data returned from the database.
MyDataset = New DataSet
MyCommand.Fill(MyDataset)
' Create a new DataTable object and assign to it
' the new table in the Tables collection.
MyTable = New DataTable
MyTable = MyDataset.Tables(0)
' Find how many rows are in the Rows collection
' of the new DataTable object.
numrows = MyTable.Rows.Count
If numrows = 0 then
Response.Write("<p>No records.</p>")
Else
Response.Write("<p>" & Cstr(numrows) & " records found.</p>")
For loop1 = 0 To numrows - 1
' Print the values of the two columns in the Columns
' collection for each row.
Response.Write(MyTable.Rows(loop1).Item("FirstName") _
& " " & MyTable.Rows(loop1).Item("LastName") & "<br>")
Next loop1
End If
Response.Write("<p>End of data.</p>")
End Sub
</Script>
</html>
在數(shù)據(jù)庫查詢(甚至是多表聯(lián)接查詢)返回單個(gè)記錄集的情況下,可以通過與使用 ADO 記錄集的方式幾乎相同的方式使用單個(gè) DataTable(在此示例中為 MyTable)。
參考《NET FRAMEWORK SDK文擋》