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相关推荐
- .ne中的控制器循环出来的数据如何显示在视图上_Web程序设计-ASP.NET MVC4数据库操作实例...
ASP.NET MVC4数据库操作实例 之前文章介绍了MVC4与Pure框架结合进行的网页设计过程中如何定义控制器.方法.模型.视图等.并使用实例进行了简单说明.本文将在此基础上进一步说明如何使用MV ...
- 大数据——MySQL数据库操作实例
大数据--四种数据库(MySQL,HBase,MongoDB,Redis)操作实例 问题描述: Student学生表 1. 根据上面给出的表格,利用MySQL5.7设计出student学生表格; a) ...
- 大数据——MongoDB数据库操作实例
大数据--四种数据库(MySQL,HBase,MongoDB,Redis)操作实例 问题描述: student文档如下: 1. 根据上面给出的文档信息,用MongoDB模式设计student集合. a ...
- 大数据——HBase数据库操作实例
大数据--四种数据库(MySQL,HBase,MongoDB,Redis)操作实例 问题描述: Student学生表 1. 根据上面给出的表格,用Hbase Shell模式设计student学生表格. ...
- vb.net 教程 4-11 Json文件操作 1
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的. json格式作为轻量级数据交换格式,在网页上也得到大量应用.json与xml格式各有优缺点,本教 ...
- VB连接Sql Server,Oracle,SyBase,Access数据库操作实例
- VB连接数据库是常用的操作 对于小型数据的存取是非常不错的.在设计时 对于不同数据的连接方式都不同 这里使用了ADODB连接字符串的方式来访问常见的数据库:Sql Server,Oracle,Sy ...
- C# SQLite 数据库操作实例2
运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQLite System.Data.SQ ...
- python数据库操作实例
本篇文章主要讲解python3.9.6下数据库的链接和查询数据的方法 前置环境需要安装mysql和json两个模块,引入方式为import 模块名,不懂的朋友可以先看<python小白操作入门教 ...
- [C++]MySQL数据库操作实例
由于课程大实验需要使用c++操作MySQL数据库,经过一番研究终于成功实现VS2008中与MySQL的连接. 环境设置: 安装完MySQL之后,将安装目录中的include目录下的libmysql ...
- Spring的DAO模块数据库操作实例
Spring的DAO模块提供了对了JDBC.Hibernate.JDO等DAO层支持.DAO模块依赖于 ,MyEclipse自带的Spring DAO类库没有这两个类库,需要自己添加. 下面以保存实体 ...
最新文章
- 100G 免费技术学习资料大全分享 (2020 年最新)
- idea前进和后退快捷键_必备技能:IDEA一定要懂的32条快捷键
- 每天一道LeetCode-----将字符串的连续相同的字符合并成一个字符后加个数
- Ehcache学习一:JDBC caching
- 编程语言里函数方法类型检查的重要性
- 光纤传感器实验模块_飞秒激光制备异质光纤光栅的温度应变双参数传感器
- Windows Server 2008 R2 之三十故障转移群集(二)
- NodeJs .net core connect Azure service bus
- java的super_Java中this和super的用法总结
- 20155317 王新玮 2016-2017-2 《Java程序设计》第5周学习总结
- FutureMapping:空间人工智能的计算结构
- 计算机飞行模式无法关闭,Win10开启飞行模式之后无法关闭退出怎么解决
- html+css+js学习-01
- 《图解密码技术》笔记
- react.createContext
- python_sklearn机器学习算法系列之LogisticRegression(逻辑回归)----识别垃圾邮件(短信)
- 读《有效管理的5大兵法》笔记摘录(一)核心价值观:求实、进取、创新、协同、分享
- 智能驾驶软件测试,智能驾驶实车测试系统-VDAS
- Java项目中利用钉钉机器人Webhook向钉钉群推送告警通知
- bzoj1645 / P2061 [USACO07OPEN]城市的地平线City Horizon(扫描线)