vb.net 教程 8-15 数据库操作实例1
版權聲明:本文為博主原創文章,轉載請在顯著位置標明本文出處以及作者網名,未經作者允許不得用于商業目的。
因某個朋友提出的Treeview操作數據庫的問題,所以寫了本節的代碼。
本節代碼使用的是command來操作的,主要原因:
1是綁定的靈活性不高
2是treeview似乎不能綁定數據,因為最終的數據是由TreeNode來顯示的。
本節用到了羅斯文數據庫中的產品表、類別表、供應商表。
設計界面如下:
左側樹狀圖列出類別和該類下的產品,根據選擇的產品再將信息顯示到右側。
運行時如下圖:
設計時需要考慮的問題:
一是OleDbConnection的使用貫穿于整個程序,考慮在窗體載入時打開,窗體關閉時關閉Connection。
二是窗口載入時顯示出所有類別,使用 root1+類別ID 保存到Tag中。
三是為提高運行效率,在點擊類別時檢查是否下面有產品,如果沒有產品,那么將產品加入到類別下,而不是載入窗體就加入產品到類別下。產品節點使用 root2+產品ID保存到所在節點。
四是點擊樹狀圖節點的時候,根據Tag中不同的前綴(root1還是root2)來執行不同操作。
?
主要代碼如下:
加入窗體級變量:
Dim odc As OleDbConnection窗體載入時,將所有類別名稱加入到樹狀圖:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Loadodc = New OleDbConnection()odc.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;data source=D:\save\博客教程\08 數據庫\Northwind.mdb"Dim sql As String = "select 類別id,類別名稱 from 類別"Dim sqlCmd As New OleDbCommand(sql, odc)Dim odReader As OleDbDataReaderodc.Open()Dim nd As TreeNodeodReader = sqlCmd.ExecuteReader()If odReader.HasRows ThenDo While odReader.Readnd = New TreeNodend.Text = odReader(1)nd.Tag = "root1" & odReader(0)TreeView1.Nodes.Add(nd)LoopEnd IfEnd Sub點擊樹狀圖上面的節點:
Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClickDim nd As TreeNodend = e.NodeIf nd.Tag.ToString.Substring(0, 5) = "root1" ThenDim typeId As String = nd.Tag.ToString.Substring(5, 1)If nd.Nodes.Count = 0 ThenDim sql As String = "select 產品Id,產品名稱 from 產品 where 類別id=" & typeIdDim sqlCmd As New OleDbCommand(sql, odc)Dim odReader As OleDbDataReaderodReader = sqlCmd.ExecuteReader()Dim childNode As TreeNodeIf odReader.HasRows ThenDo While odReader.ReadchildNode = New TreeNodechildNode.Text = odReader(1)childNode.Tag = "root2" & odReader(0)nd.Nodes.Add(childNode)LoopEnd IfEnd IfTreeView1.CollapseAll()nd.Expand()ElseDim childNodeTag As String = nd.Tag.ToStringDim productId As String = childNodeTag.Substring(5, childNodeTag.Length - 5)Dim sql As String = "SELECT a.*, b.類別名稱,c.公司名稱FROM (產品 a inner join 類別 b on a.類別ID=b.類別ID)inner join 供應商 c on a.供應商ID=c.供應商ID where 產品id=" & productIdDim sqlCmd As New OleDbCommand(sql, odc)Dim odReader As OleDbDataReaderodReader = sqlCmd.ExecuteReader(CommandBehavior.SingleRow)odReader.Read()TextBox1.Text = odReader("產品名稱")TextBox2.Text = odReader("公司名稱")TextBox3.Text = odReader("類別名稱")TextBox4.Text = odReader("單位數量")TextBox5.Text = odReader("單價")TextBox6.Text = odReader("庫存量")TextBox7.Text = odReader("訂購量")TextBox8.Text = odReader("再訂購量")TextBox9.Text = IIf(odReader("中止"), "是", "否")End IfEnd Sub窗體關閉時候,需要關閉數據庫連接:
Private Sub Form1_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closingodc.Close()End Sub?
?
?
?
?
由于.net平臺下C#和vb.NET很相似,本文也可以為C#愛好者提供參考。
學習更多vb.net知識,請參看vb.net 教程 目錄
?
?
?
總結
以上是生活随笔為你收集整理的vb.net 教程 8-15 数据库操作实例1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新春活动策划案例(共31份)
- 下一篇: 在vb连接mysql数据库_VB连接My