数据库(vb.net+OleDB+Access)简易学生信息管理系统
在我们日常生活当中,数据库一词往往离不开我们的编程界,在学校、仓库等方面起着存储数据及数据关系作用的文件。相较于Excel,Access可以存储无限多的记录,内容也十分丰富,例如文本、数字、日期、T&F等。而且不需要额外的转换数据即可被.net读取使用(难道不是已经封装好了吗doge),好了开始我们今天的教学。
如题,我们需要完成几项工作
一、安装Office2016,也可以单独安装Access2016,新建数据库


二、如果安装顺利那么就不需要安装“引擎”,因为本人安装完之后VS闪退后来卸载,然后重装Office解决。主要是在这一步栽的人比较多,不懂的可以评论或私信解决哦
三、打开VS,新建项目,设计窗体
1、学生表

我们做数据库开发会使用到DataGridView控件,用来显示查询结果和预览。
2、课程表
3、父窗体MDI容器
四、开始编写代码
1、主窗体:(窗口管理器)
![]()
Public Class 窗口管理器Private Sub 学生表ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 学生表ToolStripMenuItem.Click学生表.MdiParent = Me学生表.Show()End SubPrivate Sub 课程表ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 课程表ToolStripMenuItem.Click课程表.MdiParent = Me课程表.Show()End Sub
End Class
尽量使用英文做变量名,此处为了直观。
2、学生表
全局变量声明
Dim objDa As New OleDb.OleDbDataAdapter
Dim objDs As New DataSet
Dim objXSTable As DataTable
全局过程声明:
Sub Reload()objDa.Update(objDs, "xsb1")objXSTable.Clear()Bind()End SubSub Bind()Dim objConn As New OleDb.OleDbConnectionDim objComm As New OleDb.OleDbCommandobjConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source='G:\桌面\学生信息管理系统\学生信息.accdb'"objComm.CommandText = "SELECT * from 学生表 "objComm.Connection = objConnobjDa.SelectCommand = objCommDim builder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(objDa)objConn.Open()objDa.Fill(objDs, "xsb1")objXSTable = objDs.Tables("xsb1")objConn.Close()DataGridView1.DataSource = objDs.Tables("xsb1")End Sub
窗体加载时,我们要先填充表格(初始化)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadDim objConn As New OleDb.OleDbConnectionDim objComm As New OleDb.OleDbCommandDim objDa As New OleDb.OleDbDataAdapterDim objDs As New DataSetobjConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source='G:\桌面\学生信息管理系统\学生信息.accdb'"objComm.CommandText = "SELECT * from 学生表"objComm.Connection = objConnobjDa.SelectCommand = objCommobjConn.Open()objDa.Fill(objDs, "xsb")objConn.Close()DataGridView1.DataSource = objDs.Tables("xsb")Bind()End Sub
录入一条记录:(注意,不管时录入还是修改,主键的内容都不可以为空!)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click' Dim objConn As New OleDb.OleDbConnection' Dim objComm As New OleDb.OleDbCommand' objConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;'Data Source='G:\桌面\学生信息管理系统\学生信息.accdb'"Dim myRow As DataRow = objXSTable.NewRow()myRow("学号") = TextID.TextmyRow("姓名") = TextName.TextmyRow("性别") = Combo1.SelectedItemmyRow("出生日期") = DatePicker.ValuemyRow("选课(专业)") = TextOptionClass.TextmyRow("是否为艺考生") = CheckBox1.CheckedmyRow("学分") = TextScore.TextmyRow("备注") = TextTip.TextobjXSTable.Rows.Add(myRow)Reload()End Sub
修改
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickDim index As Integer = DataGridView1.CurrentRow.IndexobjXSTable.Rows.Item(index).Item(0) = TextID.TextobjXSTable.Rows.Item(index).Item(1) = TextName.TextobjXSTable.Rows.Item(index).Item(2) = Combo1.SelectedItemobjXSTable.Rows.Item(index).Item(3) = DatePicker.ValueobjXSTable.Rows.Item(index).Item(4) = TextOptionClass.TextobjXSTable.Rows.Item(index).Item(5) = CheckBox1.CheckedobjXSTable.Rows.Item(index).Item(6) = TextScore.TextobjXSTable.Rows.Item(index).Item(7) = TextTip.TextReload()
End Sub
删除一条记录
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.ClickDim index As Integer = DataGridView1.CurrentRow.IndexobjXSTable.Rows.Item(index).Delete()Reload()End Sub
清理文本框内的数据(不影响数据库)
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.ClickTextID.Text = ""TextName.Text = ""Combo1.SelectedIndex = -1DatePicker.Value = #2000/01/01#TextOptionClass.Text = ""CheckBox1.Checked = FalseTextScore.Text = ""TextTip.Text = ""
End Sub
查询(模糊查询,简单的SQL语句)
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.ClickDim objConn As New OleDb.OleDbConnectionDim objComm As New OleDb.OleDbCommandDim objDa As New OleDb.OleDbDataAdapterDim objDs As New DataSetobjConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source='G:\桌面\学生信息管理系统\学生信息.accdb'"If FRid.Checked = True ThenobjComm.CommandText = "SELECT * from 学生表 where 学号 like '%" & FTid.Text & "%'"ElseIf FRName.Checked = True ThenobjComm.CommandText = "SELECT * from 学生表 where 姓名 like '%" & FTName.Text & "%'"End IfobjComm.Connection = objConnobjDa.SelectCommand = objCommobjConn.Open()objDa.Fill(objDs, "xsb")objConn.Close()DataGridView1.DataSource = objDs.Tables("xsb")End Sub
点击表格任意一个单元格(立马填充到左下角的编辑区域,但注意主键不能为空,本人没有做错误处理)
Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClickTextID.Text = DataGridView1.CurrentRow.Cells(0).Value.ToStringTextName.Text = DataGridView1.CurrentRow.Cells(1).Value.ToStringCombo1.SelectedItem = DataGridView1.CurrentRow.Cells(2).Value.ToStringCombo1.Text = DataGridView1.CurrentRow.Cells(2).Value.ToStringDatePicker.Value = DataGridView1.CurrentRow.Cells(3).ValueTextOptionClass.Text = DataGridView1.CurrentRow.Cells(4).Value.ToStringCheckBox1.Checked = DataGridView1.CurrentRow.Cells(5).ValueTextScore.Text = DataGridView1.CurrentRow.Cells(6).Value.ToStringTextTip.Text = DataGridView1.CurrentRow.Cells(7).Value.ToString
End Sub
3、课程表,类似于学生表。
Imports System.Windows.Forms.VisualStyles.VisualStyleElement.ButtonPublic Class 课程表Dim objDa As New OleDb.OleDbDataAdapterDim objDs As New DataSetDim objXSTable As DataTablePrivate Sub 课程表_Load(sender As Object, e As EventArgs) Handles MyBase.LoadDim objConn As New OleDb.OleDbConnectionDim objComm As New OleDb.OleDbCommandDim objDa As New OleDb.OleDbDataAdapterDim objDs As New DataSetobjConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source='G:\桌面\学生信息管理系统\学生信息.accdb'"objComm.CommandText = "SELECT * from 课程表"objComm.Connection = objConnobjDa.SelectCommand = objCommobjConn.Open()objDa.Fill(objDs, "kcb")objConn.Close()DataGridView1.DataSource = objDs.Tables("kcb")Bind()End SubSub Reload()objDa.Update(objDs, "kcb1")objXSTable.Clear()Bind()End SubSub Bind()Dim objConn As New OleDb.OleDbConnectionDim objComm As New OleDb.OleDbCommandobjConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source='G:\桌面\学生信息管理系统\学生信息.accdb'"objComm.CommandText = "SELECT * from 课程表 "objComm.Connection = objConnobjDa.SelectCommand = objCommDim builder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(objDa)objConn.Open()objDa.Fill(objDs, "kcb1")objXSTable = objDs.Tables("kcb1")objConn.Close()DataGridView1.DataSource = objDs.Tables("kcb1")End SubPrivate Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.ClickTextID.Text = ""TextName.Text = ""End SubPrivate Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.ClickDim index As Integer = DataGridView1.CurrentRow.IndexobjXSTable.Rows.Item(index).Delete()Reload()End SubPrivate Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickDim index As Integer = DataGridView1.CurrentRow.IndexobjXSTable.Rows.Item(index).Item(0) = TextID.TextobjXSTable.Rows.Item(index).Item(1) = TextName.TextEnd SubPrivate Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim myRow As DataRow = objXSTable.NewRow()myRow("课程编号") = TextID.TextmyRow("课程名称") = TextName.TextobjXSTable.Rows.Add(myRow)Reload()End SubPrivate Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.ClickDim objConn As New OleDb.OleDbConnectionDim objComm As New OleDb.OleDbCommandDim objDa As New OleDb.OleDbDataAdapterDim objDs As New DataSetobjConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
Data Source='G:\桌面\学生信息管理系统\学生信息.accdb'"If FRid.Checked = True ThenobjComm.CommandText = "SELECT * from 课程表 where 课程编号 like '%" & FTid.Text & "%'"ElseIf FRName.Checked = True ThenobjComm.CommandText = "SELECT * from 课程表 where 课程名称 like '%" & FTName.Text & "%'"End IfobjComm.Connection = objConnobjDa.SelectCommand = objCommobjConn.Open()objDa.Fill(objDs, "kcb")objConn.Close()DataGridView1.DataSource = objDs.Tables("kcb")End SubPrivate Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClickTextID.Text = DataGridView1.CurrentRow.Cells(0).Value.ToStringTextName.Text = DataGridView1.CurrentRow.Cells(1).Value.ToStringEnd Sub
End Class
本系统由于是初级阶段,没有表与表之间的关系,目前属于孤立阶段,但是简单的录入、修改和查询已经可以实现。
等待下一次更新!
相关文章:
数据库(vb.net+OleDB+Access)简易学生信息管理系统
在我们日常生活当中,数据库一词往往离不开我们的编程界,在学校、仓库等方面起着存储数据及数据关系作用的文件。相较于Excel,Access可以存储无限多的记录,内容也十分丰富,例如文本、数字、日期、T&F等。而且不需要…...
Android 自定义图片进度条
用系统的Progressbar,设置图片drawable作为进度条会出现图片长度不好控制,容易被截断,或者变形的问题。而我有个需求,使用图片背景,和图片进度,而且在进度条头部有个闪光点效果。 如下图: 找了…...
对话:用言语构建深刻的思想碰撞
对话:用言语构建深刻的思想碰撞 在写书中,对话是一种有力的工具,能与读者进行有效的沟通和交流,引发深思和反思。它不仅是信息传递的方式,更是加深情感、探讨主题和吸引读者参与的桥梁。你应从读者的角度思考…...
Linux完整版命令大全(九)
4. linux压缩备份命令 ar 功能说明:建立或修改备存文件,或是从备存文件中抽取文件。语 法:ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]补充说明:ar可让您集合许多…...
solidworks画螺栓学习笔记
螺栓 单位mm 六边形 直径16mm 水平约束 拉伸 选择厚度6mm 拉伸切除 画相切圆 切除厚度6mm,反向切除 ,拔模角度45 螺栓 直径9mm,长度30mm 倒角 直径1mm,角度45 异形孔向导 螺纹线 偏移打勾,距离为2mm&#…...
【Spark】加大hive表在HDFS存的每个文件的大小
配置参数: spark.hadoop.hive.exec.orc.default.stripe.size78643200 spark.hadoop.orc.stripe.size78643200 spark.hadoopRDD.targetBytesInPartition78643200 spark.hadoop.hive.exec.dynamic.partition.modenonstrict spark.sql.sources.partitionOverwriteMode…...
2024 年 5 个 GO REST API 框架
什么是API? API是一个软件解决方案,作为中介,使两个应用程序能够相互交互。以下一些特征让API变得更加有用和有价值: 遵守REST和HTTP等易于访问、广泛理解和开发人员友好的标准。API不仅仅是几行代码;这些是为移动开…...
socket地址理解
socket介绍 套接字的基本概念 1. 套接字的定义: 套接字(socket)是计算机网络中用于通信的端点,它抽象了不同主机上应用进程之间双向通信的机制。 2. 套接字的作用: 套接字连接应用进程与网络协议栈,使…...
Gopeed的高级用法
Gopeed是一个开源全平台下载器,具体简介请参考: “狗屁下载器”?Gopeed - 开源全平台下载器 (免费轻量 / 比 Aria2 好用 / 远程下载) - 异次元软件世界 (iplaysoft.com) 这里主要介绍下自己摸索出来的 Gopeed 的高级做法。 有的网站添加的…...
OpenHarmony系统使用gdb调试init
前言 OpenAtom OpenHarmony(简称“OpenHarmony”)适配新的开发板时,启动流程init大概率会出现问题,其为内核直接拉起的第一个用户态进程,问题定位手段只能依赖代码走读和增加调试打印,初始化过程中系统崩溃…...
【SpringCloud】Spring Cloud基本介绍
目录 回顾架构分类单体架构分布式架构微服务架构什么是微服务优点缺点微服务的架构特征:微服务架构面临的挑战技术挑战微服架构的设计原则微服务概念提供者(Provider)消费者(Consumer)RPC和Restful集群分布式 总结 服务拆分和远程调用服务拆分原则服务拆分示例 思考…...
全域运营是本地生活服务的新模式吗?
最近,本地生活赛道又出现了一个新的说法,即全域运营是本地生活的下半场。事实上,这一论断并非空穴来风,而是有真凭实据。 作为多家互联网大厂重点布局的业务板块,本地生活的火爆程度早已有目共睹。根据多家互联网大厂…...
机器视觉-硬件
机器视觉-硬件 镜头焦距凸透镜焦点不止一个相机镜头由多个镜片组成对焦和变焦 镜头光圈光圈的位置光圈系数F 镜头的景深景深在光路中的几何意义 远心镜头远心镜头的种类远心镜头特性应用场景 镜头的分辨率镜头反差镜头的MTF曲线镜头的靶面尺寸镜头的几何相差相机镜头接口螺纹接…...
机器学习实验 --- 逻辑回归
第1关:逻辑回归核心思想 任务描述 本关任务:根据本节课所学知识完成本关所设置的编程题 #encodingutf8 import numpy as npdef sigmoid(t):完成sigmoid函数计算:param t: 负无穷到正无穷的实数:return: 转换后的概率值:可以考虑使用np.exp()函数#*****…...
浅谈C++函数
目录 一、函数的概念二、调用函数的两个前提三、函数传参的三种形式四、函数返回类型 一、函数的概念 函数是C程序的基本模块,通常一个C程序由一个或多个函数组成。函数可以完成用户指定的任务,一般分为库函数和用户自定义的函数。函数由函数头和函数体…...
6.小程序页面布局 - 账单明细
文章目录 1. 6.小程序页面布局 - 账单明细1.1. 竞品1.2. 布局分析1.3. 布局demo1.4. 页面实现-头部1.5. 账单明细1.5.1. 账单明细-竞品分析1.5.2. 账单明细-实现1.5.2.1. 账单明细-实现-mock数据1.5.2.2. 每日收支数据的聚合整理1.5.2.3. 页面scroll-view 1.6. TODO 1. 6.小程序…...
记录ES7.X更新数据的低级错误
背景:新项目复用之前同事遗留下的方法 问题:ES跨索引更新数据错误 排查:复用同事的方法有问题,他直接使用ES别名更新数据导致,只有一个索引时无问题,当多个索引使用同一别名时会出现异常 解决࿱…...
【简单介绍下链表基础知识】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
leetcode 2915.和为目标值的最长子序列的长度
思路:01背包 这个背包问题很经典了,但是这里涉及到一个问题,就是我们转化问题的时候发现,这个背包需要正好装满才行。这里我们把长度作为价值,也就是说每一个数的价值都是1。 我们需要把dp初始化为全部为负数&#x…...
欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理和高斯消元
欧拉函数 给定 n 个正整数 ai,请你求出每个数的欧拉函数。 欧拉函数的定义1∼N 中与 N 互质的数的个数被称为欧拉函数,记为 ϕ(N)。 若在算数基本定理中,Np1a11p2a2…pmm,则:ϕ(N) Np1−1/p1p2−1/p2…pm−1/pm 输…...
Goframe项目实战:从数据库表到API接口的全链路开发指南(含避坑点)
Goframe项目实战:从数据库表到API接口的全链路开发指南(含避坑点)在当今微服务架构盛行的时代,Go语言因其高性能和并发优势成为后端开发的热门选择。而Goframe作为一款企业级的Go应用开发框架,提供了从数据库操作到API…...
3分钟掌握HashCalculator:你的文件完整性守护专家
3分钟掌握HashCalculator:你的文件完整性守护专家 【免费下载链接】HashCalculator 哈希值计算工具,批量计算/批量校验/查找重复文件/改变哈希值等,支持集成到系统右键菜单 项目地址: https://gitcode.com/gh_mirrors/ha/HashCalculator …...
终极Chrome画中画扩展:如何在浏览器中实现高效视频多任务处理
终极Chrome画中画扩展:如何在浏览器中实现高效视频多任务处理 【免费下载链接】picture-in-picture-chrome-extension 项目地址: https://gitcode.com/gh_mirrors/pi/picture-in-picture-chrome-extension 想要在浏览网页、处理文档的同时继续观看视频内容吗…...
Matlab,plot绘图如何添加边框
matlab生成的图——编辑(E)——坐标区属性(A)——框样式——Box,勾选效果:...
真可用!美团数字人模型开源,MV、电商等统统拿下
美团开源的数字人视频生成框架 LongCat-Video-Avatar 刚刚更新到 1.5 版本。是真能用。这版更新把音频编码器换了,推理步数砍到8步,在770人、13240条主观评分的大规模评测里,雷达图面积全面领先。音频编码器换血,8步出图LongCat-V…...
Unity3D深度纹理实战:手把手教你实现可交互的激光雷达扫描特效(附完整C#/Shader代码)
Unity3D深度纹理实战:手把手教你实现可交互的激光雷达扫描特效(附完整C#/Shader代码)在科幻题材的游戏开发中,激光雷达扫描特效是营造科技感的经典元素。从《赛博朋克2077》的战术目镜到《看门狗》的环境扫描,这种动态…...
圈复杂度>12=技术债炸弹?DeepSeek静态分析实战:从17.8→3.2的重构路径全披露
更多请点击: https://codechina.net 第一章:圈复杂度>12技术债炸弹?DeepSeek静态分析实战:从17.8→3.2的重构路径全披露 当函数圈复杂度(Cyclomatic Complexity)持续高于12,它不再是…...
告别手动预约:i茅台自动预约系统5分钟部署指南
告别手动预约:i茅台自动预约系统5分钟部署指南 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https://gitcode…...
机器学习在射电天文数据分类中的应用:以MIGHTEE巡天SFG/AGN分类为例
1. 项目概述:当机器学习遇见深空射电巡天在射电天文学领域,我们正经历一场数据洪流。以MeerKAT望远镜阵列主导的MIGHTEE巡天项目为例,其在COSMOS天区的一次早期科学数据释放,就在不到1平方度的天区内探测到了超过6000个射电源。传…...
DeTikZify:基于AI的TikZ图形程序自动生成技术深度解析
DeTikZify:基于AI的TikZ图形程序自动生成技术深度解析 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ. 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify DeTikZify是一款革命性的多模态…...
