2012/02/27

on
vb.net Visual Basic .net Database Connection
.NET中各種數據庫連接大全(cn)
.Net Connnection(en) http://www.connectionstrings.com/
VB.NET Tutorial and source code(en)  : http://vb.net-informations.com/

===========================================================
■■■ System.Data.SqlClient
■■■ System.Data.SqlClient.SqlConnection :
 建構 : SqlConnection ::: SqlConnection(String) :::
 方法 : Close ::: Open
===
■■■ System.Data.SqlClient.SqlCommand :
 建構 : SqlCommand ::: SqlCommand(String) ::: SqlCommand(String, SqlConnection) ::: SqlCommand(String, SqlConnection, SqlTransaction)
 屬性 : CommandText ::: Connection ::: Parameters :::
 方法 : Cance()   ::: Dispose() ::: ExecuteNonQuery()   ::: ExecuteReader()   ::: ExecuteScalar() ::: ExecuteXmlReader() :::
 ===
■■■ SqlDataReader 物件 [唯讀循序,ExecuteReader()傳回] :
 屬性 : FieldCount ::: HasRows ::: IsClosed ::: Item(Int32) ::: Item(String) ::: Item為Default , 可省略
 方法 : Close() ::: GetDataTypeName(int) ::: GetFieldType(int) ::: GetName(int) ::: IsDBNull(int) ::: Read()
 XmlReader 物件  [唯讀,ExecuteXmlReder()傳回] :::
每次在 SqlConnection 上,只能有一個 SqlDataReader 開啟 ;
ASP.NET 2.0(含)以上搭配MS SQL 2005(含)以上的話,可以解決只能有一個 SqlDataReader 開啟。將 MultipleActiveResultSets=true; 這屬性,寫在資料庫連線字串(ConnectionString)裡即可。
MARS:Multiple Active Result Sets,多重作用結果集
MARS能在同一條資料連線(SqlConnection)開啟一個以上的結果集,並讓你同時存取這些結果集。


 可以重設 CommandText 屬性並重複使用 SqlCommand 物件。 然而在可以執行新的或先前的命令之前,必須先關閉 SqlDataReader
 ExecuteScalar 傳回查詢所傳回的結果集第一個資料列的第一個資料行。 會忽略其他的資料行或資料列。如果結果集是空的,則為 null 參考 (在 Visual Basic 中為 Nothing)。

 ExecuteNonQuery 查詢資料庫結構或建立如資料表的資料庫物件,或執行 UPDATE、INSERT 或 DELETE 陳述式,不使用佔資源的 DataSet 來變更資料庫的資料。雖然 ExecuteNonQuery 不傳回資料列,但是對應至參數的任何輸出參數或傳回值都會填入 (Populate) 資料。對 UPDATE、INSERT 和 DELETE 陳述式而言,傳回值是受影響的資料列數目。 如果要插入或更新的資料表上包含有觸發程序 (Trigger),傳回值便會包含受到插入或更新作業影響之資料列的數目,以及受到一個或多個觸發程序影響的資料列數目。 對其他類型的陳述式而言,傳回值為 -1。 如果發生復原,傳回值也是 -1。
===========================================================
■■■ SqlCommand SqlDataReader Sample : [ txtMsgRich 為 RichTextBox]

<connectionStrings> 
 <add name="HMOConn" connectionString="Data Source=W7WWW;Initial Catalog=HMO;Persist Security Info=True;User ID=hmosa;Password=Dyna123" providerName="System.Data.SqlClient" /> 
</connectionStrings>


Dim connStr as String = System.Configuration.ConfigurationManager.ConnectionStrings("HMOConn").ConnectionString


Public Sub Sql_Cmd_Reader(ByVal tQryStr As String, ByVal tConnStr As String)
        Using conn As New SqlConnection(tConnStr)
            conn.Open()
            Dim sqlCmd As New SqlCommand(tQryStr, conn)
            Dim sqlRd As SqlDataReader = sqlCmd.ExecuteReader()
            Dim fdCount As Integer = sqlRd.FieldCount()
            While sqlRd.Read()
                For i As Integer = 0 To fdCount - 1
                    txtMsgRich.Text &= sqlRd.GetName(i) & " ::: "
                Next
                txtMsgRich.Text &= vbNewLine
                For i As Integer = 0 To fdCount - 1
                    txtMsgRich.Text &= sqlRd(1).ToString(i) & " ::: "
                Next
                txtMsgRich.Text &= vbNewLine
            End While
            sqlRd.Close()

            conn.Close()
        End Using
End Sub
===========================================================
■■■ System.Data.DataSet :
 屬性 : Tables :::
System.Data.DataTable : dim tb as DataTable = DataSetObj.Tables("tableName")
System.Data.DataRow
System.Data.DataColumn
System.Data.Common.DataAdapter
System.Data.DataView
===========================================================
■■■ DataSet Sample Prg :

Dim connetionString As String
        Dim connection As SqlConnection
        Dim command As SqlCommand
        Dim adapter As New SqlDataAdapter
        Dim ds As New DataSet
        Dim i, j As Integer
        Dim sql As String
        '"Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password"
        connetionString = "Data Source=HP2008PC;Initial Catalog=HMO;User ID=sqlsa;Password=Dyna123"
        sql = "Select * from CardDefine"
        connection = New SqlConnection(connetionString)
        Try
            connection.Open()
            command = New SqlCommand(sql, connection)
            adapter.SelectCommand = command
            adapter.Fill(ds)
            adapter.Dispose()
            command.Dispose()
            connection.Close()


            txtMessage.Text = ""
            For i = 0 To ds.Tables(0).Rows.Count - 1
                For j = 0 To ds.Tables(0).Columns.Count - 1
                    txtMessage.Text &= ds.Tables(0).Rows(i).Item(j) & "  --  "
                Next
                txtMessage.Text &= vbNewLine
            Next


        Catch ex As Exception
            MsgBox("Can not open connection ! " & ex.Message)
        End Try


===========================================================
■■■ a

===========================================================
■■■ a

===========================================================
■■■ a

===========================================================
■■■ a






0 意見: