[廣告]升級.NET Framework 2.0的理由

1. 趨勢變化:新的作業系統內建.NET 2.0平台
2. 節省開發時間:提供更多系統物件供程式設計使用,減少70%的程式碼
3. 提升 50% 的競爭力,高效率網頁應用程式開發
4. 簡化多國語言網頁開發
5. 超強的開發工具Visual Studio 2005
6. 多樣並強化版的伺服器控制項
7. 資料繫結技術再進步
8. 網站樣式統一的佈景主題設計
9. 提供網站設定檔(web.config)的使用者介面
10. ASP.NET2.0支援AJAX Framework可快速開發AJAX運作方式的網頁
11. 內建的會員管理機制讓網站更有組織化
12. 讓部署後的網站,更安全(可加密網頁和程式碼)
13. 更穩定、安全的執行平台

SqlDataSource

System.Web.UI.WebControls.SqlDataSource–>.NET Framework 2.0 版
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.cht/cpref16/html/T_System_Web_UI_WebControls_SqlDataSource.htm
http://msdn2.microsoft.com/zh-tw/library/system.web.ui.webcontrols.sqldatasource(VS.80).aspx

以下為本人觀點
SqlDataSource為.NET Framework 2.0版的新功能,把select,update,insert的SQL指令集合起來,
免除了在1.0版,還需要使用DataAdapter做為串接器的情況,
伺服器控制項(如DROPDOWNLIST,GRIDVIEW等)也可直接指定SqlDataSource為它的DataSource
在這邊還要注意一點,DataSource可指定的有分DataSource和DataSourceID兩種,
兩者只能擇一而用,

EX:
gridview1.datasourceID=SqlDataSource
gridview1.datasource=SqlDataSource

GridView

GridView是2.0才有的新玩意,是MS推出來取代DataGrid的,
配合新的DataSource,要寫的CODE更少了,
以下是我在使用DataSource、GridView上遇到的問題
作法一:

如果GridView的DataSource是在程式中給gridview的,那排序跟換頁等程式都要自己撰寫,要在它的兩個事件中寫程式碼,我的做法是:
‘==========================
‘GridView 的換頁動作
‘==========================
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging

Me.GridView1.PageIndex = e.NewPageIndex
BindGridView()

End Sub

‘==========================
‘GridView 的排序動作
‘==========================
Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
Dim strSort As String = ViewState(“sort”)

If Right(strSort, 4) = “desc” Then
ViewState(“sort”) = e.SortExpression
Else
ViewState(“sort”) = e.SortExpression + ” desc”
End If

BindGridView()

End Sub

作法二:

1. 還是拉一個SQLDataSource, 只連到資料庫, 並不做Select, update, insert, delete command的處理.
2. 並把Gridview的datasource只到這個SQLDataSource
3. 要異動Gridview的內容時, 將SQLDataSource.SelectCommand = SQL 指令, 重新做Gridview.DataBind()即可

相關參考:

http://phone.idv.tw/cs2/forums/thread/274.aspx

消失的UDDI

記得我剛去UUU上ASP.NET課程的時候,
那時狂推微軟的UDDI網站,
什麼是UDDI,就是彙集WEB SERVICE的查詢網站,
沒想到今天我想查看有沒有查IP來源的WEB SERVICE,
結果連微軟自己的UDDI網站都不見了,
這不過是一年多前的事,看來又是一個推廣失敗的例子

可惡的BeginTransaction

Public Sub RunSqlTransaction(myConnString As String)
Dim myConnection As New SqlConnection(myConnString)
myConnection.Open()

Dim myCommand As SqlCommand = myConnection.CreateCommand()
Dim myTrans As SqlTransaction

' Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted, "SampleTransaction")
' Must assign both transaction object and connection
' to Command object for a pending local transaction
myCommand.Connection = myConnection
myCommand.Transaction = myTrans

Try
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
myCommand.ExecuteNonQuery()
myTrans.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
Try
myTrans.Rollback("SampleTransaction")
Catch ex As SqlException
If Not myTrans.Connection Is Nothing Then
Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
" was encountered while attempting to roll back the transaction.")
End If
End Try

Console.WriteLine("An exception of type " & e.GetType().ToString() & _
"was encountered while inserting the data.")
Console.WriteLine("Neither record was written to database.")
Finally
myConnection.Close()
End Try
End Sub 'RunSqlTransaction

SQL 2005被UPDATE被鎖定

星期日整整研究了一天,毫無進展,
問題是這樣的,
在一個SUB中,UPDATE可以執行,
但在另一個SUB中,UPDATE卻會一直發生錯誤,
(已超過連接逾時的設定。在作業完成之前超過逾時等待的時間,或者是伺服器未回應。)
SQL SERVER會LOCK住,然後其他指令就無法執行,
有可能是因為BeginTranscatio會鎖住同一條CONNECTION,
出錯後導致SQL連線鎖住,
可是為什麼會鎖住,
就是不解