[ASP.NET]4種利用程式設計方式讀取資料庫,輸出成表格

添加迴響 2010年4月13日
[顯示結果]
新一代的ASP.NET提供很多方便的東西,例如:拉GridView和DataSource到網頁,只要設定幾下,馬上就有一個從資料庫中讀出來的表格 不過,去企業工作時可能就不是用新的技術開發,例如:接別人寫得專案,用ASP(不是ASP.NET)寫一個連資料庫的程式,必須想辦法寫出來 這裡提供4種方式可以輸出

[第一種]-使用ADODB.Connection和ADODB.RecordSet|連接ACCESS資料庫

Dim e_Connection, e_RecordSet As Object '建立空白物件
'只能在有  Page aspcompat="true"  頁面指示詞的頁面上建立 Apartment 執行緒元件
e_Connection = Server.CreateObject("ADODB.Connection") '建立ADODB.Connection物件
Dim DataSource As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Server.MapPath("\App_Data\Student.mdb").ToString & ";Persist Security Info=True" 'Server.MapPath會對應專案的路徑
e_Connection.Open(DataSource) '啟動資料庫連接
e_RecordSet = e_Connection.execute("SELECT * FROM Student") '執行SQL語法,並傳回RecordSet

'開頭標記
Dim OutputWay1 As New StringBuilder '新一代的字串儲存方式,讓字串存取效率變快
OutputWay1.Append("" & vbNewLine)
'第一列(標題)
OutputWay1.Append("" & vbNewLine)
For Field = 0 To e_RecordSet.Fields.Count - 1
	OutputWay1.Append("" & vbNewLine) '輸出欄位名稱
Next
OutputWay1.Append("" & vbNewLine)
'第N列(資料列)
While Not e_RecordSet.EOF '判斷是否讀到資料錄尾
	OutputWay1.Append("" & vbNewLine)
	For Field As Integer = 0 To e_RecordSet.Fields.Count - 1
		OutputWay1.Append("" & vbNewLine)
	Next
	OutputWay1.Append("" & vbNewLine)
	e_RecordSet.MoveNext() '讀取下一筆
End While
'結尾標記
OutputWay1.Append("
" & e_RecordSet(Field).Name & "
" & e_RecordSet(Field).Value & "
") '輸出 OutputWay1Label.Text = OutputWay1.ToString OutputWay1 = Nothing '釋放資源

[第二種]-使用ADODB.Connection和ADODB.RecordSet和ADODB.Command|連接ACCESS資料庫

Dim objConn = CreateObject("ADODB.Connection")
Dim objCmd = CreateObject("ADODB.Command")
Dim objRs = CreateObject("ADODB.RecordSet")
Dim DataSource As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
	Server.MapPath("\App_Data\student.mdb").ToString & ";Persist Security Info=True" 'Server.MapPath會對應專案的路徑
objConn.Open(DataSource) '啟動資料庫連接
objCmd.CommandText = "SELECT * FROM Student"
objCmd.ActiveConnection = objConn
objRs.Open(objCmd)

'開頭標記
Dim OutputWay2 As New StringBuilder '新一代的字串儲存方式,讓字串存取效率變快
OutputWay2.Append("" & vbNewLine)
'第一列(標題)
OutputWay2.Append("" & vbNewLine)
For Field = 0 To objRs.Fields.Count - 1
	OutputWay2.Append("" & vbNewLine) '輸出欄位名稱
Next
OutputWay2.Append("" & vbNewLine)
'第N列(資料列)
While Not objRs.EOF '判斷是否讀到資料錄尾
	OutputWay2.Append("" & vbNewLine)
	For Field As Integer = 0 To objRs.Fields.Count - 1
		OutputWay2.Append("" & vbNewLine)
	Next
	OutputWay2.Append("" & vbNewLine)
	objRs.MoveNext() '讀取下一筆
End While
'結尾標記
OutputWay2.Append("
" & objRs(Field).Name & "
" & objRs(Field).Value & "
") '輸出 OutputWay2Label.Text = OutputWay2.ToString OutputWay2 = Nothing '釋放資源

[第三種]-使用SqlClient.SqlConnection和SqlClient.SqlCommand|連接SQL Server資料庫

Dim ConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=" & Server.MapPath("\App_Data\Student.mdf").ToString & ";Integrated Security=True;User Instance=True" '資料庫連接字串
Dim QueryString As String = "SELECT * FROM Student" 'sql查詢
Using connection As New System.Data.SqlClient.SqlConnection(ConnectionString) '新增資料庫連接
	Try
		Dim Command As New System.Data.SqlClient.SqlCommand(QueryString, connection) '新增資料庫查詢
		connection.Open() '開啟資料庫連接
		Dim dataReader As SqlClient.SqlDataReader = Command.ExecuteReader() '將查詢後的結果回給Reader進行讀取動作
		'第一列(標題)
		Dim OutputWay3 As New StringBuilder
		'開頭標記
		OutputWay3.Append("" & vbNewLine)
		OutputWay3.Append("" & vbNewLine)
		For Field = 0 To dataReader.FieldCount - 1
			OutputWay3.Append("" & vbNewLine) '輸出欄位名稱
		Next
		OutputWay3.Append("" & vbNewLine)

		'第N列(資料列)
		Do While dataReader.Read '一直讀取,直到沒有資料列可讀取為止
			OutputWay3.Append("" & vbNewLine)
			For Field As Integer = 0 To dataReader.FieldCount - 1
				OutputWay3.Append("" & vbNewLine)
			Next
			OutputWay3.Append("" & vbNewLine)
		Loop
		dataReader.Close() '關閉Reader
		'結尾標記
		OutputWay3.Append("
" & dataReader.GetName(Field) & "
" & dataReader.GetValue(Field) & "
") '輸出 OutputWay3Label.Text = OutputWay3.ToString OutputWay3 = Nothing '釋放資源 Catch ex As Exception OutputWay3Label.Text = "ERROR:連到SQL資料庫時出現錯誤
" & _ "原因在於Data Source=.\SQLEXPRESS資料庫名稱在小弟我的機器上和您的PC上的資料庫名稱不同
" & _ "若出現此錯誤,麻煩您更正成您本機上的SQL Server名稱" End Try End Using

[第四種]-使用OleDb.OleDbConnection和OleDb.OleDbCommand|連接ACCESS資料庫

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
	'方法二
	Way2()
	'方法四
	'資料庫連接字串(在Web.config)
	'連接字串
	Dim AccessDbConnStr As ConnectionStringSettings = ConfigurationManager.ConnectionStrings("AccessDb")
	'SQL連接字串
	Dim SQLString As String = "SELECT * FROM [Student]"
	'從資料庫讀取
	Dim OutputData As OleDb.OleDbDataReader = ReadData(AccessDbConnStr, "ExecuteReader", SQLString)
	'輸出成表格
	CreateTable(OutputData)
End Sub
Public Sub CreateTable(ByVal OutputData As OleDb.OleDbDataReader)
	Dim Output As New StringBuilder
	Const TR As String = "", TR2 As String = "", TD As String = "", TD2 As String = "", TABLE As String = "", TABLE2 As String = "
" Output.Append(TABLE) Dim RowCount As Integer = 0 '欄位名稱 Output.Append(TR) If OutputData.HasRows Then For Field = 0 To OutputData.FieldCount - 1 '直欄 Output.Append(TD & OutputData.GetName(Field) & TD2) Next End If Output.Append(TR2) '資料行資料 While OutputData.Read() Dim a As String = OutputData.RecordsAffected Output.Append(TR) For Field = 0 To OutputData.FieldCount - 1 '直欄 Output.Append(TD & OutputData.Item(OutputData.GetName(Field)) & TD2) Next Output.Append(TR2) End While Output.Append(TABLE2) OutputWay4Label.Text = Output.ToString End Sub Public Function ReadData(ByRef ConnStr As ConnectionStringSettings, ByVal Mode As String, ByRef Sql As String, Optional ByVal Start As Integer = 0, Optional ByVal [End] As Integer = 0) Dim Conn As New OleDb.OleDbConnection(ConnStr.ConnectionString) '給DB String連接資訊 Dim Cmd As New OleDb.OleDbCommand(Sql, Conn) Conn.Open() If Mode.ToLower = "ExecuteScalar".ToLower Then Return Cmd.ExecuteScalar() ElseIf Mode.ToLower = "ExecuteReader".ToLower Then Dim Reader As OleDb.OleDbDataReader Reader = Cmd.ExecuteReader Return Reader Conn.Close() '關閉連接 End If Return Nothing End Function

檔案下載

原始檔下載
  1. 2010年4月16日 at 08:34 | #1
    無尾熊粉絲

    哇~偶像

    版主回應:
    您好,感謝您的支持與回覆,謝謝^_^

  1. 還沒有 trackbacks

訂閱迴響