版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

因某个朋友提出的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相关推荐

  1. .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...

    ASP.NET MVC4数据库操作实例 之前文章介绍了MVC4与Pure框架结合进行的网页设计过程中如何定义控制器.方法.模型.视图等.并使用实例进行了简单说明.本文将在此基础上进一步说明如何使用MV ...

  2. 大数据——MySQL数据库操作实例

    大数据--四种数据库(MySQL,HBase,MongoDB,Redis)操作实例 问题描述: Student学生表 1. 根据上面给出的表格,利用MySQL5.7设计出student学生表格; a) ...

  3. 大数据——MongoDB数据库操作实例

    大数据--四种数据库(MySQL,HBase,MongoDB,Redis)操作实例 问题描述: student文档如下: 1. 根据上面给出的文档信息,用MongoDB模式设计student集合. a ...

  4. 大数据——HBase数据库操作实例

    大数据--四种数据库(MySQL,HBase,MongoDB,Redis)操作实例 问题描述: Student学生表 1. 根据上面给出的表格,用Hbase Shell模式设计student学生表格. ...

  5. vb.net 教程 4-11 Json文件操作 1

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. json格式作为轻量级数据交换格式,在网页上也得到大量应用.json与xml格式各有优缺点,本教 ...

  6. VB连接Sql Server,Oracle,SyBase,Access数据库操作实例

    - VB连接数据库是常用的操作 对于小型数据的存取是非常不错的.在设计时 对于不同数据的连接方式都不同 这里使用了ADODB连接字符串的方式来访问常见的数据库:Sql Server,Oracle,Sy ...

  7. C# SQLite 数据库操作实例2

    运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQLite System.Data.SQ ...

  8. python数据库操作实例

    本篇文章主要讲解python3.9.6下数据库的链接和查询数据的方法 前置环境需要安装mysql和json两个模块,引入方式为import 模块名,不懂的朋友可以先看<python小白操作入门教 ...

  9. [C++]MySQL数据库操作实例

    由于课程大实验需要使用c++操作MySQL数据库,经过一番研究终于成功实现VS2008中与MySQL的连接.   环境设置: 安装完MySQL之后,将安装目录中的include目录下的libmysql ...

  10. Spring的DAO模块数据库操作实例

    Spring的DAO模块提供了对了JDBC.Hibernate.JDO等DAO层支持.DAO模块依赖于 ,MyEclipse自带的Spring DAO类库没有这两个类库,需要自己添加. 下面以保存实体 ...

最新文章

  1. 100G 免费技术学习资料大全分享 (2020 年最新)
  2. idea前进和后退快捷键_必备技能:IDEA一定要懂的32条快捷键
  3. 每天一道LeetCode-----将字符串的连续相同的字符合并成一个字符后加个数
  4. Ehcache学习一:JDBC caching
  5. 编程语言里函数方法类型检查的重要性
  6. 光纤传感器实验模块_飞秒激光制备异质光纤光栅的温度应变双参数传感器
  7. Windows Server 2008 R2 之三十故障转移群集(二)
  8. NodeJs .net core connect Azure service bus
  9. java的super_Java中this和super的用法总结
  10. 20155317 王新玮 2016-2017-2 《Java程序设计》第5周学习总结
  11. FutureMapping:空间人工智能的计算结构
  12. 计算机飞行模式无法关闭,Win10开启飞行模式之后无法关闭退出怎么解决
  13. html+css+js学习-01
  14. 《图解密码技术》笔记
  15. react.createContext
  16. python_sklearn机器学习算法系列之LogisticRegression(逻辑回归)----识别垃圾邮件(短信)
  17. 读《有效管理的5大兵法》笔记摘录(一)核心价值观:求实、进取、创新、协同、分享
  18. 智能驾驶软件测试,智能驾驶实车测试系统-VDAS
  19. Java项目中利用钉钉机器人Webhook向钉钉群推送告警通知
  20. bzoj1645 / P2061 [USACO07OPEN]城市的地平线City Horizon(扫描线)

热门文章

  1. Weblogic下载安装以及部署
  2. 在Linux中修复U盘
  3. idea 代码格式化 无效
  4. java学习软件_刚学习java,用哪些学习软件比较好?
  5. SAP中检查货币代码
  6. IDEA中如何使用debug调试项目 一步一步详细教程
  7. StringUtil里面的常用的方法
  8. 高级操作系统——XV6进程管理
  9. 直线绘制算法-数值微分法(DDA)
  10. SVM实现多分类的三种方案