首先,在使用sqlce時,一定會用到SqlServerCE這個命名空間,而要對資料庫做連線,就要用到SqlCeconnection這個類別,其中ConnectionString的設定相當重要,相關詳細的資料可以到MSDN觀看,網址是下面這邊
首先,在使用sqlce時,一定會用到SqlServerCE這個命名空間,而要對資料庫做連線,就要用到SqlCeconnection這個類別,其中ConnectionString的設定相當重要,相關詳細的資料可以到MSDN觀看,網址是下面這邊
這邊挑幾個重點部分說明,
一般來說會看到像下面這樣的連線字串
conn.ConnectionString = _
"Persist Security Info = False; Data Source = '\Northwind.sdf';" & _
"Password = ''; File Mode = 'shared read'; " & _
"Max Database Size = 256; Max Buffer Size = 1024"
其中可以看到比較特殊的部分
Data Source:這個就是資料庫檔案的位置,要特別注意路徑的部分,在Mobile環境的根目錄是”\”
Persist Security Info:這是說明資料庫是否有加密(需要密碼)
Max DataBase Size:這個是設定資料庫最大的大小,單位是MB,如果沒有指定的話,預設的大小是128MB。
File Mode:這是存取的規則,如果需要多人使用,甚至說本身使用就會用到多個連線就要注意,設定值有下面這些
l Read Write:預設的權限,各個開啟的連線都能夠自由存取資料庫
l Shared Read:連線開啟後允許其他的連線以Read Only的方式去開啟,直到連線關閉
l Read Only:以唯讀的方式開啟資料庫
l Exclusive:以這種方式開啟後不允許其他的process去開啟或修改資料庫
其他部分的詳細資料可以到上述連結的網頁中查詢;在檔案型的資料庫要特別注意連線字串上的設定,下面是測試兩個連線時的測試程式碼,要特別注意是,一般使用時開啟資料庫連線,使用完畢後記得要關閉連線,這邊因為測試需要,所以沒有去做關閉的動作。
值行的結果畫面像下面這樣
測試程式碼會像下面這樣
Imports System.Data
Public Class Form1
Dim conn1 As SqlServerCe.SqlCeConnection
Dim conn2 As SqlServerCe.SqlCeConnection
Dim DS As New DataSet
Public Function GetAppPath() As String
Return System.IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString)
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cboConn1.SelectedIndex = 0
cboConn2.SelectedIndex = 0
conn1 = New SqlServerCe.SqlCeConnection
conn2 = New SqlServerCe.SqlCeConnection
DS = New DataSet
End Sub
Private Sub btnOpenConn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenConn1.Click
If conn1.State = ConnectionState.Open Then
conn1.Close()
End If
conn1.ConnectionString = String.Format( _
"Persist Security Info = False; Data Source = '{0}';" & _
"File Mode = '{1}'; " & _
"Max Database Size = 256; Max Buffer Size = 1024", _
GetAppPath() & "\Northwind.sdf", _
cboConn1.Text)
Try
''請注意,一般使用完畢連線需要關閉,這邊測試原因
''開啟連線後沒有關閉連線
conn1.Open()
If DS.Tables("conn1") IsNot Nothing Then
DS.Tables("conn1").Clear()
End If
Using DA As New SqlServerCe.SqlCeDataAdapter("Select * from Customers", conn1)
DA.Fill(DS, "conn1")
End Using
dgConn1.DataSource = DS.Tables("conn1")
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
End Try
End Sub
Private Sub btnOpenConn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenConn2.Click
If conn2.State = ConnectionState.Open Then
conn2.Close()
End If
conn2.ConnectionString = String.Format( _
"Persist Security Info = False; Data Source = '{0}';" & _
"File Mode = '{1}'; " & _
"Max Database Size = 256; Max Buffer Size = 1024", _
GetAppPath() & "\Northwind.sdf", _
cboConn2.Text)
Try
''請注意,一般使用完畢連線需要關閉,這邊測試原因
''開啟連線後沒有關閉連線
conn2.Open()
If DS.Tables("conn2") IsNot Nothing Then
DS.Tables("conn2").Clear()
End If
Using DA As New SqlServerCe.SqlCeDataAdapter("Select * from Customers", conn2)
DA.Fill(DS, "conn2")
End Using
dgConn2.DataSource = DS.Tables("conn2")
Catch ex As Exception
MessageBox.Show(ex.Message.ToString)
End Try
End Sub
Private Sub btnCloseConn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCloseConn1.Click
If conn1.State <> ConnectionState.Closed Then conn1.Close()
End Sub
Private Sub btnCloseConn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCloseConn2.Click
If conn2.State <> ConnectionState.Closed Then conn2.Close()
End Sub
End Class