C# - VS2019 WinFrm应用程序连接Access数据库,并简单实现数据库表的数据查询、显示
序言
众所周知,Oracle数据库和MySQL数据库一般在大型项目中使用,在某些小型项目中Access数据库使用较为方便,今天记录一下VS2019 WinFrm应用程序连接Access数据库,并实现数据库表的数据查询显示。
创建Access数据库
这里以Access2000为例,创建一个命名为DB.mdb的数据库(没有密码),并创建一张SysUser表用来存放用户名和密码,添加一条数据。
数据库文件保存为D:\CCode\AccessDB\DB.mdb。
如下图。

创建WinFrm桌面应用项目
创建项目、添加控件
创建WinFrm桌面应用项目,并在主窗体上添加一个button和一个dataGridView,分别命名为btnConnect和dataGridViewMain。
如下图。

添加引用
因为接下来要使用OleDb的相关命令,所以项目中必须包含System.Data 和 System.Data.OleDb的引用,所以这里我们需要添加using System.Data.OleDb;
如下图。

添加按钮事件
双击按钮,编辑如下代码:
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\CCode\\AccessDB\\DB.mdb");
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from SysUser";
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (dr.HasRows)
{
for (int i = ; i < dr.FieldCount; i++)
{
dt.Columns.Add(dr.GetName(i));
}
dt.Rows.Clear();
}
while (dr.Read())
{
DataRow row = dt.NewRow();
for (int i = ; i < dr.FieldCount; i++)
{
row[i] = dr[i];
}
dt.Rows.Add(row);
}
cmd.Dispose();
conn.Close();
dataGridViewMain.DataSource = dt;
查看运行效果:

项目全部代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace TestAccessDB
{
public partial class MainFrm : Form
{
public MainFrm()
{
InitializeComponent();
} private void btnConnect_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\CCode\\AccessDB\\DB.mdb");
OleDbCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from SysUser";
conn.Open();
OleDbDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
if (dr.HasRows)
{
for (int i = ; i < dr.FieldCount; i++)
{
dt.Columns.Add(dr.GetName(i));
}
dt.Rows.Clear();
}
while (dr.Read())
{
DataRow row = dt.NewRow();
for (int i = ; i < dr.FieldCount; i++)
{
row[i] = dr[i];
}
dt.Rows.Add(row);
}
cmd.Dispose();
conn.Close();
dataGridViewMain.DataSource = dt;
}
}
}
注意控件的命名。
作者:Jeremy.Wu
出处:https://www.cnblogs.com/jeremywucnblog/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
C# - VS2019 WinFrm应用程序连接Access数据库,并简单实现数据库表的数据查询、显示的更多相关文章
- 在db2中 两个数据库之间的两个表的联合查询
大家好,今天遇到了在db2中 两个数据库之间的两个表的联合查询 我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理我找了类似于比如两个数据库: db1,db2用户名密码s ...
- 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表
原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...
- 程序处理数据库中值字段值为null的查询显示
1.如果你做了一个简单的注册界面,需要用户进行注册,但有些项是不必要填的,当用户完成注册时,数据库表中的相应字段的值会写入null,但如何将查询的字段的值null显示出来? 2.首先我们学习一下如何向 ...
- 两种方法将oracle数据库中的一张表的数据导入到另外一个oracle数据库中
oracle数据库实现一张表的数据导入到另外一个数据库的表中的方法有很多,在这介绍两个. 第一种,把oracle查询的数据导出为sql文件,执行sql文件里的insert语句,如下: 第一步,导出sq ...
- MySQL 数据库中如何把A表的数据插入到B表?
web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码 ...
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
- 数据库SQL练习(一):数据查询
先创建以下3张基本表 1.学生信息表(Student): 2.课程表(Course): 3.成绩表(Score): 4. 将下列数据输入各个表中 建表SQL: CREATE DATABASE Stud ...
- NoSQL:从关系型数据库到非关系型数据库
关系型数据库 所谓关系型数据库,,就是指采用了关系模型来组织数据的数据库. 什么是关系模型,简单说,关系模型就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织. 关系模 ...
- redis数据库的简单介绍
NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世 ...
随机推荐
- MySQL问题记录——导入导出权限设置
MySQL问题记录——导入导出权限设置 摘要:本文主要记录了在使用MySQL的过程中导入导出权限设置时遇到的问题以及解决方案. 相关日志 [Note] --secure-file-priv is se ...
- js绑定事件代理的坑
js通过事件代理的方式绑定跳转事件,我这里的逻辑是把click事件绑定在最外层container上面,如果e.target包含我已经写好的class,则执行跳转逻辑.但是这种方式好像只能是在点击的元素 ...
- iOS中的NSOperation线程
1.除NSThread之外的第二种多线程的编程方法 2.采用NSOperation(线程操作,通常用他的子类)和NSOperationQueue(线程队列)搭配来做多线程开发,采用NSOperat ...
- ABP进阶教程11 - 小结
点这里进入ABP进阶教程目录 效果预览 至此,ABP进阶教程的查询/分页/排序/导出/打印示例已完成,效果如下 登录 首页 办公室信息 院系信息 课程信息 教职员信息 学生信息 新增 修改 删除 查询 ...
- 用python的time库写一个进度条
运算符 算数运算 如a=10,b=20 +两个数相加 a+b=30 -两个数相减 a-b=-10 两个数相乘 a****b =200 /两个数相除b/a=2 %取模,并返回余数b%a=0 幂,a*** ...
- NGINX动态增加模块,平滑升级
这是一个小心活,不过,多操作几次,也就熟悉了. 参考URL: https://segmentfault.com/a/1190000006755963 一,安装nginx依赖包. yum install ...
- python线程类的start()和run()
start()方法: 开始线程活动. 对每一个线程对象来说它只能被调用一次,它安排对象在一个另外的单独线程中调用run()方法,而非当前所处的线程,当该方法在同一个线程对象中被调用超过一次时,会引入R ...
- MySQL 王者晋级之路
3.2 Query Cache: 3.3 存储引擎 一.TokuDB的特点: – 插入性能加快20到80倍– 压缩数据减少存储空间– 数据量可扩展到几个TB– 不会产生索引碎片– 支持Hot Colu ...
- 20191102 「HZOJ NOIP2019 Round #12」20191102模拟
先开坑. md原题写挂我也真是... 100+20+10 白夜 打表大法吼 显然,不在环上的点对答案的贡献是 \((k-cycle)^{k-1}\) . 打表得到环上的递推式,矩阵一下乘起来就好了. ...
- nanopor软件列表
1.软件