close
命名空間
System.Data (引用ADO.NET基礎物件)
System.Data.OLEDB (引用OLE DB資料來源物件)
System.Data.SqlClient (引用SQL Server資料來源物件)
1. 自訂連接字串
2. 透過 SqlConnectionStringBuilder 來建構連接字串
使用 My.Settings 物件來取用此連接字串以便連接至所指向的資料庫
其設定資料是儲存在專案的組態設定檔 app.config 中
若設定裡有密碼或伺服器路徑等敏感資訊時,可加密組態設定檔來保護此些敏感資訊
4. 將連接字串儲存在組態檔中
可直接開啟組態檔 app.config,並自行在 <connectionStrings>......</connectionStrings> 中編寫一個代表連線字串的XML標記
【程式範例】
將組態檔中每一連接字串的名稱顯示在下拉清單方塊 cboConn 中,當選取該下拉清單方塊中某一連接字串後,顯示該資料庫中所有資料表的相關資訊至 DataGridView 控制項中。
→ 表單的 Load 事件
→ cboConn 控制項的 SelectedIndexChanged 事件
System.Data (引用ADO.NET基礎物件)
System.Data.OLEDB (引用OLE DB資料來源物件)
System.Data.SqlClient (引用SQL Server資料來源物件)
Imports System.Data.SqlClient |
1. 自訂連接字串
Using cn As New SqlConnection ( "Data Source=(local) \ SQLExpress; Database=北風貿易; Integrated Security=SSPI;") cn.Open() ...... End Suing |
Dim cn As SqlConnection Dim connstr As String connstr="Server=localhost; database=資料庫名稱; uid=sa; pwd=;" cn=New SqlConnection(connstr) cn.Open() ...... cn.Close() |
2. 透過 SqlConnectionStringBuilder 來建構連接字串
Dim connstrBuilder As New sqlConnectionStringBuilder() connstrBuilder.DataSource="(local) \ SQLEXPRESS" connstrBuilder.InitialCatalog="北風貿易" connstrBuilder.IntegratedSecurity=True Using cn As New SqlConnection(connstrBuilder.ConnectionString) cn.Open() ...... End Using |
3. 透過應用程式設定來建構連接字串
方案總管中於 My Project 上連按兩下懷屬左鍵 or 該專案上按滑鼠右鍵選「屬性」,選「設定」頁籤
值的設定內容為:
資料來源:Microsoft SQL Server
資料提供者:.NET Framework Data Provider for SQL Server
伺服器名稱:localhost (選取輸入登入驗證資料及資料庫名稱相關資訊)
「範圍」說明 Application (應用程式):不能在執行階段變更或儲存,即在執行階段是唯讀的。 User (使用者):可以在執行階段變更或儲存,即在執行階段是可讀取及寫入的。 |
使用 My.Settings 物件來取用此連接字串以便連接至所指向的資料庫
Using cn As New SqlConnection ( My.Settings.LocalSQLSvr) cn.Open() ...... End Suing |
其設定資料是儲存在專案的組態設定檔 app.config 中
<connectionStrings> <add name="PrjName.My.MySettings.LocalSQLExpress" connectionString="Data Source=(local) \ SQLExpress; Initial Catalog=北風貿易;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> |
<connectionStrings> <add name="PrjName.My.MySettings.LocalSQLSvr" connectionString="Data Source=localhost;Initial Catalog=WebDB;User ID=sa" providerName="System.Data.SqlClient" /> </connectionStrings> |
4. 將連接字串儲存在組態檔中
可直接開啟組態檔 app.config,並自行在 <connectionStrings>......</connectionStrings> 中編寫一個代表連線字串的XML標記
<connectionStrings> <add name="LocalWorks" connectionString="Data Source=(local);Initial Catalog= Works;Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> |
connectionString 屬性:實際的連接字串。 providerName屬性:資料提供者。 |
Imports System.Configuration ...... Dim settings As ConnectionStringSettings= ConfigurationManager.ConnectionStrings("LocalWorks") If settings IsNot Nothing Then Using cn As New SqlConnection(settings.ConnectionString) cn.Open() ...... End Using End If |
【程式範例】
將組態檔中每一連接字串的名稱顯示在下拉清單方塊 cboConn 中,當選取該下拉清單方塊中某一連接字串後,顯示該資料庫中所有資料表的相關資訊至 DataGridView 控制項中。
→ 表單的 Load 事件
Dim cfg As System.Configuration.Configuration= ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None) Dim csSec As ConnectionStringsSection=cfg.ConnectionStrings Dim i As Integer For i=0 To ConfigurationManager.ConnectionStrings.Count-1 Dim cs As ConnectionStringSettings=csSec.ConnectionStrings(i) If cs.Name <> "LocalSqlServer" Then * Me.cboConn.Items.Add(cs.Name) End If Next i |
* 避免取到 ASP.NET 2.0 內建名稱為 LocalSqlServer 的連接字串,其記錄在 machine.config 中,是用來連接至 App_Data 目錄中的 SQL Server Express 資料庫檔。 |
→ cboConn 控制項的 SelectedIndexChanged 事件
Dim frmStaMsg As New frmStatus frmStaMsg.Show("Connecting to SQL Server ...") Try Dim ds As New DataSet() Dim cs As ConnectionStringSettings= ConfigurationManager.ConnectionStrings(Me.cboConn.SelectedItem.ToString) If cs IsNot Nothing Then txtConn.Text= _ "連接字串的名稱:" & cs.Name & vbCrLf & _ "連接字串的內容:" & cs.ConnectionString & vbCrLf & _ "連接字串的資料提供者:" & cs.ProviderName Using cn As New SqlConnection(cs.ConnectionString) cn.Open() Dim cmd As New SqlCommand("Select * From sys.tables", cn)* Using dr As SqlDataReader=cmd.ExecuteReader() ds.Load(dr, LoadOption.OverwriteChanges, New String() {"資料表列舉"}) Me.BindingSource1.DataSource=ds.Tables("資料表列舉") Me.DataGridView1.DataSource=Me.BindingSource1 End Using End Using End If Catch ex As Exception MessageBox.Show(ex.Message) End Try frmStaMsg.Close() |
* SQL Server 2000 為 SELECT * FROM sysobjects where xtype='U' |
全站熱搜
留言列表