1、首先打開Visual Studio 2008代碼窗口,添加引用。

創(chuàng)新互聯(lián)建站專注于科爾沁左翼網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供科爾沁左翼營銷型網(wǎng)站建設(shè),科爾沁左翼網(wǎng)站制作、科爾沁左翼網(wǎng)頁設(shè)計、科爾沁左翼網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造科爾沁左翼網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供科爾沁左翼網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
2、輸入以下代碼:Public conn1 ?As SqlConnection = New SqlConnection 。
3、聲明關(guān)鍵字 Public;(因為是全局變量,所以用Public 來聲明)。
4、如果SQL 數(shù)據(jù)庫就在本機,則用以下代碼連接。
5、如果代碼太長,影響可讀性,可以用空格加"_"后,回車換行即可。
如果樓主熟悉VB6,可以直接在項目中添加ADODB的Com引用,這樣你就可以像VB6那樣操作數(shù)據(jù)庫了!
另外
.NET
Framework中連接數(shù)據(jù)庫要用到ADO.NET。如果要操作Access數(shù)據(jù)庫,要用到System.Data.OleDb命名空間下的許多類。
比如按樓主所說,“我想在textbox1中顯示表一中【一些數(shù)據(jù)】字段下的第一個內(nèi)容”:
'首先導(dǎo)入命名空間
Imports
System.Data
Imports
System.Data.OleDb
'然后在某一個事件處理程序中寫:
Dim
conn
As
New
OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=數(shù)據(jù)庫.accdb;Jet
OLEDB:Database
Password=MyDbPassword")
Dim
command
As
New
OleDbCommand("Select
*
From
數(shù)據(jù)表",
conn)
conn.Open()
'打開數(shù)據(jù)庫連接
Dim
reader
As
OleDbDataReader
=
command.ExecuteReader()
'執(zhí)行SQL語句,返回OleDbDataReader
對象
Do
While
reader.Read()
'讀取一條數(shù)據(jù)
textbox1.Text
+=
reader("一些數(shù)據(jù)")
VbCrLf
Loop
reader.Close()
'關(guān)閉OleDbDataReader
conn.Close()
'關(guān)閉連接
我們先簡單的了解一下什么是消息隊列(MSMQ)?消息隊列是 Windows (NT也有MSMQ WIN / /me/xp不含消息隊列服務(wù)但是支持客戶端的運行)操作系統(tǒng)中通訊的基礎(chǔ) 也是用于創(chuàng)建分布式 松散連接通訊應(yīng)用程序的工具 這些應(yīng)用程序可以通過不同種類的網(wǎng)絡(luò)進(jìn)行通訊 也可以與脫機的計算機通訊 消息隊列分為用戶創(chuàng)建隊列和系統(tǒng)隊列 用戶隊列分為
· 公共隊列 在整個可傳遞消息的 消息隊列 網(wǎng)絡(luò)中復(fù)制并傳輸 并且有可能由網(wǎng)絡(luò)連接的所有站點訪問
· 專用隊列 不在整個網(wǎng)絡(luò)中發(fā)布 相反 它們僅在所駐留的本地計算機上可用 專用隊列只能由知道隊列的完整路徑名或標(biāo)簽的應(yīng)用程序訪問
· 管理隊列 包含確認(rèn)在給定 消息隊列 網(wǎng)絡(luò)中發(fā)送的消息回執(zhí)的消息 指定希望 MessageQueue 組件使用的管理隊列
· 響應(yīng)隊列 包含目標(biāo)應(yīng)用程序接收到消息時返回給發(fā)送應(yīng)用程序的響應(yīng)消息 指定希望 MessageQueue 組件使用的響應(yīng)隊列
系統(tǒng)隊列分為
· 日記隊列 可選地存儲發(fā)送消息的副本和從隊列中移除的消息副本
· 死信隊列 存儲無法傳遞或已過期的消息的副本
· 專用系統(tǒng)隊列 是一系列存儲系統(tǒng)執(zhí)行消息處理操作所需的管理和通知消息的專用隊列
現(xiàn)在大家對消息隊列有了簡單的了解后 就該進(jìn)入主題了 要使用m *** q進(jìn)行軟件開發(fā)需要安裝m *** q 安裝完后就該進(jìn)入實際的開發(fā)階段 先打開vs net ide中的 服務(wù)起資源管理器 展開你想建立消息隊列的計算機名 再展開 消息隊列 右擊它在彈出菜單中選擇 新建 建立一個新的消息隊列 并為它指定一個名字 這個名字可以隨意 也可以通過編程來完成 代碼如下
system Messaging MessageQueue Create( \Private$\MyPrivateQueue ) 建立專用隊列System Messaging MessageQueue Create( myMachine\MyQueue ) 建立公共隊列
其實我認(rèn)為使用那中方法并不重要 重要的是搞清楚專用隊列和公共隊列的差別(其他隊列不是必須的) 在本例中是通過 服務(wù)器資源管理器 分別在服務(wù)器上建立了專用隊列和公共隊列
程序功能 本程序分為兩部分包括服務(wù)器程序(安裝在sql server服務(wù)器上)和客戶端程序 客戶端的作用是用來編寫t sql語句并將t sql語句放在消息中 并將消息發(fā)送到sql server服務(wù)器上的消息隊列中去 服務(wù)器程序檢查指定的消息隊列當(dāng)發(fā)現(xiàn)有新消息到達(dá)時 就開始執(zhí)行消息中的內(nèi)容 由于消息中的內(nèi)容是t sql語句所以服務(wù)器端實際上是執(zhí)行對數(shù)據(jù)庫的操作
客戶端程序
public Sub client()Dim tM As New System Messaging MessageQueue()tM Path = \Private$\jk FORMATNAME:PUBLIC= d dc c fd ce d b e d 與指定計算機中的消息隊列建立連接 Dim newMessage As New System Messaging Message(TextBox Text) 接受文本筐的t sql語句newMessage Label = This is the label 消息名字 tM Send(newMessage) 發(fā)送消息End Sub
服務(wù)端程序
public Sub server()Dim NewQueue As New System Messaging MessageQueue( \Private$\jk ) FORMATNAME:PUBLIC= d dc c fd ce d b e d 與指定計算機中的消息隊列建立連接 Dim m As System Messaging Message 查看消息隊列中的消息m = NewQueue Receive m Formatter = New System Messaging XmlMessageFormatter(New String() { System String mscorlib })Dim st As Stringst = m Body 消息隊列中消息的消息內(nèi)容 既sql語句Dim con As New OleDb OleDbConnection( 輸入自己的數(shù)據(jù)庫連接字符串 )con Open()Dim As New OleDb OleDbCommand(st con) 執(zhí)行消息中的sql語句 ExecuteNonQuery()con Close()End Sub
我為什么要使用消息隊列來處理數(shù)據(jù)庫的操作這個問題我一直沒回答 現(xiàn)在我就來回答這個問題 在本程序中你會發(fā)現(xiàn)在sub client()中我并沒連接數(shù)據(jù)庫和請求數(shù)據(jù) 而是通過發(fā)消息來操作數(shù)據(jù)庫的 這個好處是節(jié)省了兩部分時間
對數(shù)據(jù)庫連解請求數(shù)據(jù)的時間
從數(shù)據(jù)庫返回數(shù)據(jù)的時間
在很多情況下其實我們并不需要看見具體的數(shù)據(jù)就知道該怎么修改數(shù)據(jù)庫中的數(shù)據(jù) 例如要刪除張三的記錄 就可以將一條簡單的刪除語句放入消息中 發(fā)給服務(wù)器讓服務(wù)器程序去處理對數(shù)據(jù)的更改
此外消息隊列的另一個主要用途也就是當(dāng)前erp軟件中必不可少的 就是在斷開連接時保存信息 當(dāng)連接恢復(fù)時發(fā)送消息 消息在如下兩種情況中無法迅速地傳遞到它們的隊列 當(dāng)隊列駐留的計算機無法工作時 或當(dāng)路由消息所需的域控制器無法工作時 消息隊列 可讓您應(yīng)對這些情況 使得在從網(wǎng)絡(luò)上斷開連接或必要的計算機或控制器無法工作時 仍可以繼續(xù)發(fā)送消息 在這些情形下 消息暫時存儲在本地計算機或傳遞路由上的某個計算機的隊列中 直到完成傳遞所需的資源重新聯(lián)機
例如 假設(shè)有一個記錄所有在出差的銷售人員發(fā)送的訂單的中央隊列 這些銷售人員每天的大部分時間都以斷開連接的方式工作 記錄來自客戶站點的訂單信息 并且每天撥號連接一次 將所有這些信息傳輸?shù)街醒腙犃兄?因為消息在發(fā)送方斷開連接時仍可發(fā)送到隊列 所以銷售人員可以在記錄客戶信息時立即發(fā)送他們的消息 但系統(tǒng)會緩存這些消息直到晚間進(jìn)行撥號連接為止
在斷開連接時要怎么保存消息呢?向斷開連接的隊列發(fā)送消息同向可用隊列發(fā)送消息的過程幾乎完全相同 當(dāng)要向其發(fā)送的隊列不可用時 不必進(jìn)行任何特殊的配置以使組件將消息存儲在臨時隊列中 在client代碼的tM Path = \Private$\jk 后面有一條注釋語句 其實這條語句就是實現(xiàn)向斷開連接的隊列發(fā)送消息的功能 只要將tM Path = \Private$\jk 這條語句換成tM Path = FORMATNAME:PUBLIC= d dc c fd ce d b e d 其中PUBLIC后面的數(shù)字是要發(fā)送到計算機的guid數(shù)字 這個數(shù)字可以打開那臺計算機的消息隊列的屬性看見 使用這種方法就可以在斷開連接的情況下保證對服務(wù)器的操作是有效 現(xiàn)在運行這個程序后 打開win 中的 開始 》 程序 》 管理工具 》 計算機管理 在 計算機管理 窗口中展開 服務(wù)和應(yīng)用程序 》 消息隊列 》 傳出隊列 你將在右邊的窗口中看見你建立的消息 (如果你使用tM Path = \Private$\jk 語句 在 計算機管理 窗口中展開 服務(wù)和應(yīng)用程序 》 消息隊列 》 專用隊列 可以看見你建立的隊列 )
其實消息隊列的編程并不復(fù)雜 但它在網(wǎng)絡(luò)環(huán)境的程序開發(fā)中是非常有用的 可以簡化大量的開發(fā)過程和節(jié)省開發(fā)時間
其實消息隊列的編程有很大的靈活性 幾乎可以解決網(wǎng)絡(luò)編程的大部分問題 比如聊天程序 遠(yuǎn)程控制程序
本文針對消息隊列做了一個簡單的介紹 并舉了一個例來說明怎么在 net下使用消息編程 達(dá)到快速高效穩(wěn)定的對數(shù)據(jù)庫進(jìn)行操作 最后補充要說的是在internet中也一樣可以使用消息隊列 只需要將tM Path = FORMATNAME:PUBLIC= d dc c fd ce d b e d 語句后面的數(shù)字變成消息隊列所在服務(wù)器的數(shù)字就可以了 但是要提醒大家的是使用消息在傳輸時將占有大量的帶寬 所以在不是必須的時候 internet下的編程不要使用消息
lishixinzhi/Article/program/net/201311/15668
參考一下下面這段代碼就可以了。
Imports System.Data
'引入數(shù)據(jù)庫操作類命名空間
Imports System.Data.OleDb
'引入ADO.NET操作命名空間
Public Class FrmModifystInfo
Inherits System.Windows.Forms.Form
Public ADOcmd As OleDbDataAdapter
Public ds As DataSet = New DataSet()
'建立DataSet對象
Public mytable As Data.DataTable
'建立表單對象
Public myrow As Data.DataRow
'建立數(shù)據(jù)行對象
Public rownumber As Integer
'定義一個整型變量來存放當(dāng)前行數(shù)
Public SearchSQL As String
Public cmd As OleDbCommandBuilder
'======================================================
#Region " Windows 窗體設(shè)計器生成的代碼 "
#End Region
'======================================================
Private Sub FrmModifystInfo_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'窗體的載入
TxtSID.Enabled = False
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False '設(shè)置信息為只讀
Dim tablename As String = "student_Info "
SearchSQL = "select * from student_Info "
ExecuteSQL(SearchSQL, tablename) '打開數(shù)據(jù)庫
ShowData() '顯示記錄
End Sub
Private Sub ShowData()
'在窗口中的textbox中顯示數(shù)據(jù)
myrow = mytable.Rows.Item(rownumber)
TxtSID.Text = myrow.Item(0).ToString
TxtName.Text = myrow.Item(1).ToString
ComboSex.Text = myrow.Item(2).ToString
TxtBornDate.Text = Format(myrow.Item(3), "yyyy-MM-dd ")
TxtClassno.Text = myrow.Item(4).ToString
TxtTel.Text = myrow.Item(5).ToString
TxtRuDate.Text = Format(CDate(myrow.Item(6)), "yyyy-MM-dd ")
TxtAddress.Text = myrow.Item(7).ToString
TxtComment.Text = myrow.Item(8).ToString
End Sub
Private Sub BtFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtFirst.Click
'指向第一條數(shù)據(jù)
rownumber = 0
ShowData()
End Sub
Private Sub BtPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtPrev.Click
'指向上一條數(shù)據(jù)
BtNext.Enabled = True
rownumber = rownumber - 1
If rownumber 0 Then
rownumber = 0 '如果到達(dá)記錄的首部,行號設(shè)為零
BtPrev.Enabled = False
End If
ShowData()
End Sub
Private Sub BtNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtNext.Click
'指向上一條數(shù)據(jù)
BtPrev.Enabled = True
rownumber = rownumber + 1
If rownumber mytable.Rows.Count - 1 Then
rownumber = mytable.Rows.Count - 1 '判斷是否到達(dá)最后一條數(shù)據(jù)
BtNext.Enabled = False
End If
ShowData()
End Sub
Private Sub BtLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtLast.Click
'指向最后一條數(shù)據(jù)
rownumber = mytable.Rows.Count - 1
ShowData()
End Sub
Private Sub BtDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtDelete.Click
mytable.Rows.Item(rownumber).Delete() '刪除記錄
If MsgBox( "確定要刪除改記錄嗎? ", MsgBoxStyle.OKCancel + vbExclamation, "警告 ") = MsgBoxResult.OK Then
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自動生成的SQL語句
ADOcmd.Update(ds, "student_Info ")
BtNext.PerformClick()
End If
End Sub
Private Sub BtModify_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtModify.Click
TxtSID.Enabled = False '關(guān)鍵字段只讀
TxtName.Enabled = True '可讀寫
ComboSex.Enabled = True
TxtBornDate.Enabled = True
TxtClassno.Enabled = True
TxtRuDate.Enabled = True
TxtTel.Enabled = True
TxtAddress.Enabled = True
TxtComment.Enabled = True
End Sub
Private Sub BtUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtUpdate.Click
If Not Testtxt(TxtName.Text) Then
MsgBox( "請輸入姓名! ", vbOKOnly + vbExclamation, "警告 ")
TxtName.Focus()
Exit Sub
End If
If Not Testtxt(ComboSex.Text) Then
MsgBox( "請選擇性別! ", vbOKOnly + vbExclamation, "警告 ")
ComboSex.Focus()
Exit Sub
End If
If Not Testtxt(TxtClassno.Text) Then
MsgBox( "請選擇班號! ", vbOKOnly + vbExclamation, "警告 ")
TxtClassno.Focus()
Exit Sub
End If
If Not Testtxt(TxtTel.Text) Then
MsgBox( "請輸入聯(lián)系電話! ", vbOKOnly + vbExclamation, "警告 ")
TxtTel.Focus()
Exit Sub
End If
If Not Testtxt(TxtAddress.Text) Then
MsgBox( "請輸入家庭住址! ", vbOKOnly + vbExclamation, "警告 ")
TxtAddress.Focus()
Exit Sub
End If
If Not IsNumeric(Trim(TxtSID.Text)) Then
MsgBox( "請輸入數(shù)字學(xué)號! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtSID.Focus()
End If
If Not IsDate(TxtBornDate.Text) Then
MsgBox( "出生時間應(yīng)輸入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtBornDate.Focus()
End If
If Not IsDate(TxtRuDate.Text) Then
MsgBox( "入校時間應(yīng)輸入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
TxtRuDate.Focus()
Exit Sub
End If
myrow.Item(0) = Trim(TxtSID.Text)
myrow.Item(1) = Trim(TxtName.Text)
myrow.Item(2) = Trim(ComboSex.Text)
myrow.Item(3) = Trim(TxtBornDate.Text)
myrow.Item(4) = Trim(TxtClassno.Text)
myrow.Item(5) = Trim(TxtTel.Text)
myrow.Item(6) = Trim(TxtRuDate.Text)
myrow.Item(7) = Trim(TxtAddress.Text)
myrow.Item(8) = Trim(TxtComment.Text)
mytable.GetChanges()
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自動生成的SQL語句
ADOcmd.Update(ds, "student_Info ")
'對數(shù)據(jù)庫進(jìn)行更新
MsgBox( "修改學(xué)籍信息成功! ", vbOKOnly + vbExclamation, "警告 ")
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False '重新設(shè)置信息為只讀
End Sub
Private Sub BtCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtCancel.Click
TxtSID.Enabled = False
TxtName.Enabled = False
ComboSex.Enabled = False
TxtBornDate.Enabled = False
TxtClassno.Enabled = False
TxtRuDate.Enabled = False
TxtTel.Enabled = False
TxtAddress.Enabled = False
TxtComment.Enabled = False
End Sub
Public Function ExecuteSQL(ByVal SQL As String, ByVal table As String)
Try
'建立ADODataSetCommand對象
'數(shù)據(jù)庫查詢函數(shù)
ADOcmd = New OleDbDataAdapter(SQL, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\student.mdb ")
'建立ADODataSetCommand對象
ADOcmd.Fill(ds, table) '取得表單
mytable = ds.Tables.Item(0) '取得名為table的表
rownumber = 0 '設(shè)置為第一行
myrow = mytable.Rows.Item(rownumber)
'取得第一行數(shù)據(jù)
Catch
MsgBox(Err.Description)
End Try
End Function
End Class
本文名稱:Vb.Net數(shù)據(jù)庫 vbnet數(shù)據(jù)庫編程
分享地址:http://chinadenli.net/article28/doojjcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、服務(wù)器托管、全網(wǎng)營銷推廣、云服務(wù)器、網(wǎng)站營銷、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)