2010年8月11日 星期三

VB.Net連結遠端SQL資料庫(完整版)

原出處

1.首先必須先匯入元件


2.宣告必須變數

' 資料集物件的類別層級建立
Dim ds As DataSet = New DataSet
' CurrencyManager 物件的類別層級宣告
Dim bmCategory As BindingManagerBase
' 資料配接器物件的類別層級建立
Dim limingDA As SqlDataAdapter = New SqlDataAdapter
' 資料表物件的類別層級宣告
Dim dtLiming As DataTable
' CurrencyManager 物件的類別層級宣告
Dim bmLiming As BindingManagerBase

'設定資料庫預設變數
Dim SQL_Server As String = "TONY-SLO"
Dim SQL_DBName As String = "slo"
Dim SQL_Table As String = "Friend"

--
3.副程式名稱一覽表
SetDataBase() ---> 設定資料庫
SetPrintData() ---> 設定顯示資料欄位
PrintPoint() ---> 設定資料記錄目前位置訊息的初值
MoveData(ByVal i As Int16) ---> 移動資料
AddData() ---> 新增資料記錄
DeleteData() ---> 刪除資料記錄
UpdateData() ---> 更新資料記錄

4.寫入副程式

Private Sub SetDataBase()
Dim SQL_Select As String = "SELECT * FROM " & SQL_Table

' 建立一個資料連接
Dim con As New SqlConnection("Server=" & SQL_Server & ";Database=" & SQL_DBName & ";Integrated Security=SSPI")
limingDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
limingDA.SelectCommand = New SqlCommand(SQL_Select, con) ' 設定資料配接器的 SelectCommand 屬性
ds.Tables.Clear() ' 移除資料集內的所有資料表
Try
con.Open() ' 開啟連接
Dim nRowsCount As Integer = limingDA.Fill(ds, SQL_Table) ' 將所提取的資料填入資料集內的資料表中
con.Close() ' 關閉連結
dtLiming = ds.Tables(SQL_Table) ' 連結資料表
bmLiming = Me.BindingContext(dtLiming) ' 取得代表資料表的 CurrencyManager 物件
For Each myControl As Control In Controls
myControl.DataBindings.Clear() ' 清除資料
Next
SetPrintData() '設定顯示資料欄位
PrintPoint() '設定資料記錄目前位置訊息的初值
Catch ex As Exception
MessageBox.Show(ex.Message, "請注意") '如有錯誤顯示錯誤訊息
End Try
End Sub

Private Sub AddData()
' 新增資料記錄的 INSERT 陳述式
Dim SQL_Select As String = _
"INSERT into " & SQL_Table & " VALUES (" & _
"'" & TextBox1.Text & "'," & _
"'" & TextBox2.Text & "'," & _
"'" & TextBox3.Text & "'," & _
"'" & ComboBox1.Text & "')"

' 建立一個資料連接
Dim con As New SqlConnection("Server=" & SQL_Server & ";Database=" & SQL_DBName & ";Integrated Security=SSPI")
Dim insertCMD As New SqlCommand(SQL_Select, con) ' 使用 SqlCommand 類別的第三個建構函式來建立 SqlCommand 物件
Try
con.Open() ' 開啟連接
insertCMD.ExecuteNonQuery() ' 執行資料命令來新增資料記錄
MessageBox.Show("已經成功新增資料記錄。", "恭喜您", MessageBoxButtons.OK, MessageBoxIcon.Information)
SetDataBase()
Catch ex As Exception
MessageBox.Show(ex.ToString(), "請注意", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Finally
con.Close() ' 關閉連接
End Try
End Sub

Private Sub DeleteData()
' 刪除資料記錄的 DELETE 陳述式
Dim SQL_Select As String = "DELETE " & SQL_Table & " WHERE 欄位1 = " & "'" & Val(TextBox1.Text) & "'"

' 建立一個資料連接
Dim con As New SqlConnection("Server=" & SQL_Server & ";Database=" & SQL_DBName & ";Integrated Security=SSPI")
Dim deleteCMD As New SqlCommand(SQL_Select, con) ' 使用 SqlCommand 類別的第三個建構函式來建立 SqlCommand 物件
Try
con.Open() ' 開啟連接
deleteCMD.ExecuteNonQuery() ' 執行資料命令來刪除資料記錄

MessageBox.Show("已經成功刪除資料記錄。", "恭喜您", MessageBoxButtons.OK, MessageBoxIcon.Information)
SetDataBase()
Catch ex As Exception
MessageBox.Show(ex.ToString(), "請注意", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Finally
con.Close() ' 關閉連接
End Try
End Sub

Private Sub UpdateData()
' 更新資料記錄的 UPDATE 陳述式
Dim SQL_Select As String = _
"UPDATE " & SQL_Table & _
" SET 欄位1=" & TextBox1.Text & _
" ,欄位2=" & "'" & TextBox2.Text & "'" & _
" ,欄位3=" & "'" & TextBox3.Text & "'" & _
" WHERE 欄位1 = " & TextBox1.Text

' 建立連接
Dim con As SqlConnection = New SqlConnection("Server=TONY-SLO;Database=slo;Integrated Security=SSPI")
Dim updateCMD As New SqlCommand(SQL_Select, con) ' 使用 SqlCommand 類別的第三個建構函式來建立 SqlCommand 物件
Try
con.Open() ' 開啟連接
updateCMD.ExecuteNonQuery() ' 執行資料命令來更新資料記錄
MessageBox.Show("已經成功更新資料記錄。", "恭喜您", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.ToString(), "請注意", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Finally
con.Close() ' 關閉連接
End Try
End Sub

Private Sub SetPrintData()
'設定顯示資料欄位
TextBox1.DataBindings.Add("Text", dtLiming, "欄位1")
TextBox2.DataBindings.Add("Text", dtLiming, "欄位2")
TextBox3.DataBindings.Add("Text", dtLiming, "欄位3")
End Sub

Private Sub PrintPoint()
'設定資料記錄目前位置訊息的初值
TextBoxPosition.Text = String.Format("資料記錄:目前位置 {0} 總數 {1}", bmLiming.Position + 1, bmLiming.Count)
End Sub

Private Sub MoveData(ByVal i As Int16)
'移動資料
Select Case i
Case 1 '第一筆
bmLiming.Position = 0
Case 2 '上一筆
bmLiming.Position -= 1
Case 3 '下一筆
bmLiming.Position += 1
Case 4 '最後一筆
bmLiming.Position = bmLiming.Count - 1
End Select
PrintPoint() '設定資料記錄目前位置訊息的初值
End Sub

沒有留言:

張貼留言