19.4.9 数据库方式操作Excel
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。
本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。
通过COM来操作Excel操作,请参看第21.2节
在第19.3.4节【连接Excel】中已经讲述了如何连接Excel。剩下的操作就和前面几节操作Access数据库一样。
注意:Excel不支持删除一行记录,使用SQL的delete语句会返回错误。如果需要在Excel中删除一行记录,请参看第21.2.4节。
本节使用到的样例Excel表是从北风数据库中产品表的部分数据:

图19-38 产品表信息
【例 19.17】【项目:code19-017】产品信息管理。
OleDbConnection conn;
private void Form1_Load(object sender, EventArgs e)
{
conn = new OleDbConnection();
//32位office使用以下语句
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\\lessons\\Northwind.xlsx;Extended Properties=‘Excel 8.0; HDR=YES;'";
conn.Open();
//64位office使用以下语句,而且程序要编译为64位
//conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\lessons\\Northwind.xlsx;Extended Properties='Excel 12.0 XML;HDR=YES;'";
//conn.Open();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
conn.Close();
}
//查询所有数据
private void btnQueryAll_Click(object sender, EventArgs e)
{
string sql = "select * from [产品$]";
OleDbCommand command = new OleDbCommand(sql, conn);
OleDbDataReader reader = command.ExecuteReader();
int fieldCount = reader.FieldCount;
string info = "";
if( reader.HasRows)
{
string strtemp = "";
while(reader.Read())
{
strtemp = "";
for (int i = 0; i < fieldCount; i++)
strtemp += reader[i] + " ";
strtemp += "\r\n";
info += strtemp;
}
}
reader.Close();
TextBox1.Text = info;
}
//查询单价大于30的数据
private void btnQuery_Click(object sender, EventArgs e)
{
string sql = "select * from [产品$] where 单价>30";
OleDbCommand command = new OleDbCommand(sql, conn);
OleDbDataReader reader = command.ExecuteReader();
int fieldCount = reader.FieldCount;
string info = "";
if(reader.HasRows)
{
string strtemp = "";
while(reader.Read())
{
strtemp = "";
for (int i = 0; i < fieldCount; i++)
strtemp += reader[i] + " ";
strtemp += "\r\n";
info += strtemp;
}
}
reader.Close();
TextBox1.Text = info;
}
//增加数据
private void btnAdd_Click(object sender, EventArgs e)
{
string sql = "insert into [产品$] values('奶酪','每箱24瓶',55,79,0)";
OleDbCommand command = new OleDbCommand(sql, conn);
try
{
command.ExecuteNonQuery();
MessageBox.Show("添加数据成功!");
}
catch(Exception ex)
{
MessageBox.Show("添加数据失败:" + ex.Message);
}
}
//修改数据
private void btnEdit_Click(object sender, EventArgs e)
{
string sql = "update [产品$] set 产品名称='温馨奶酪',单价=80 where 产品名称='奶酪'";
OleDbCommand command = new OleDbCommand(sql, conn);
try
{
command.ExecuteNonQuery();
MessageBox.Show("修改数据成功!");
}
catch (Exception ex)
{
MessageBox.Show("修改数据失败:" + ex.Message);
}
}
运行结果如下图所示:

图19-39 列出产品信息
如果遇到已经安装了64位数据库引擎,但是仍然提示:

图19-40 提示未注册OLEDB12.0
请在项目属性【生成】|【目标平台】处选择X86。

图19-41 设置生成目标平台
学习更多vb.net知识,请参看vb.net 教程 目录
学习更多C#知识,请参看C#教程 目录
相关文章:
19.4.9 数据库方式操作Excel
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作,请参看第21.2节 在第19.3.4节【…...
BFS 走迷宫
#include<bits/stdc.h> using namespace std; int a[100][100],v[100][100];//访问数组 n,m<100 struct point {int x;int y;int step; }; queue<point> r;//申请队列 int dx[4]{0,1,0,-1};//四个方向 右下左上 int dy[4]{1,0,-1,0}; int main() { /* 5 4 1 …...
【Linux系统】—— 简易进度条的实现
【Linux系统】—— 简易进度条的实现 1 回车和换行2 缓冲区3 进度条的准备代码4 第一版进度条5 第二版进度条 1 回车和换行 先问大家一个问题:回车换行是什么,或者说回车和换行是同一个概念吗? 可能大家对回车换行有一定的误解࿰…...
Qt 中使用 SQLite 数据库的完整指南
SQLite 是一款轻量级、嵌入式的关系型数据库,无需独立的服务器进程,数据以文件形式存储,非常适合桌面和移动端应用的本地数据管理。Qt 通过 Qt SQL 模块提供了对 SQLite 的原生支持,开发者可以轻松实现数据库的增删改查、事务处理…...
数智化时代的工单管理:从流程驱动到数据驱动-亿发
在数智化时代,工单管理系统已从简单的任务分发工具演变为企业运营的智能中枢。传统工单系统关注流程的线性推进,而现代工单管理系统则强调数据的全生命周期管理,通过智能算法实现工单的自动分配、优先级判定和效能优化。这种转变不仅提升了运…...
Large Language Model Distilling Medication Recommendation Model
摘要:药物推荐是智能医疗系统的一个重要方面,因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是,目前使用的许多复杂模型往往忽视医疗数据的细微语义,而仅仅严重依赖于标识信息。此外,这些模型在处理首次就…...
floodfill算法系列一>被围绕的区域
目录 整体思想:代码设计:代码呈现: 整体思想: 代码设计: 代码呈现: class Solution {int m,n;int[] dx {0,0,-1,1};int[] dy {-1,1,0,0};public void solve(char[][] board) {m board.length;n board[…...
Redis 01 02章——入门概述与安装配置
一、入门概述 (1)是什么 Redis:REmote Dictionary Server(远程字典服务器)官网解释:Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高…...
windows基于cpu安装pytorch运行faster-whisper-large-v3实现语音转文字
1.创建虚拟环境 conda create -n faster-whisper python3.10 conda activate faster-whisper 2.安装cpu版本的pytorch pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple 3.验证pytorch安装结果 (faster-whisper) H:\big-model\faste…...
AI大模型(如GPT、BERT等)可以通过自然语言处理(NLP)和机器学习技术,显著提升测试效率
在软件测试中,AI大模型(如GPT、BERT等)可以通过自然语言处理(NLP)和机器学习技术,显著提升测试效率。以下是几个具体的应用场景及对应的代码实现示例: 1. 自动生成测试用例 AI大模型可以根据需求文档或用户故事自动生成测试用例。 代码示例(使用 OpenAI GPT API): …...
【Prometheus】prometheus黑盒监控balckbox全面解析与应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
CSS实现单行、多行文本溢出显示省略号(…)
在网页设计中,我们常常遇到这样的情况:文本内容太长,无法完全显示在一个固定的区域内。为了让界面看起来更整洁,我们可以使用省略号(…)来表示内容溢出。这不仅能提升用户体验,还能避免内容溢出…...
服务器中部署大模型DeepSeek-R1 | 本地部署DeepSeek-R1大模型 | deepseek-r1部署详细教程
0. 部署前的准备 首先我们需要足够算力的机器,这里我在vultr中租了有一张A16显卡一共16GB显存的服务器作为演示。部署的模型参数为14b的。如果需要部署满血版本671b的,需要更大的算力支持,这里由于是个人资金有限,就演示14b的部署…...
元学习之孪生网络Siamese Network
简介:元学习是一种思想,一般以神经网络作为特征嵌入的工具,实现对数据特征的提取,然后通过构造某种指标以引导优化器对模型参数进行优化。而最小化距离是最常见的学习目标,这就是熟知的度量学习,度量学习里…...
深入HBase——引入
引入 前面我们通过深入HDFS到深入MapReduce ,从设计和落地,去深入了解了大数据最底层的基石——存储与计算是如何实现的。 这个专栏则开始来看大数据的三驾马车中最后一个。 通过前面我们对于GFS和MapReduce论文实现的了解,我们知道GFS在数…...
Python创建FastApi项目模板
1. 项目结构规范 myproject/ ├── app/ │ ├── core/ # 核心配置 │ │ ├── config.py # 环境配置 │ │ └── security.py # 安全配置 │ ├── routers/ # 路由模块 │ │ └── users.py # 用户路由 │ ├…...
TCNE 网络安全
一.概况 CTF(Capture The Flag)在网络安全领域中指的是网络技术人员之间进行技术竞技的一种比赛形式,它起源于1996年的DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式,现已成为全球范围网…...
车规MCU处理器选择Cortex-M7还是Cortex-R52?
车规mcu处理器选择Cortex-M7还是Cortex-R52?跟随小编从具体应用场景、安全等级(ASIL)、性能、成本进行分析吧。 01安全等级需求 ASIL-D(如刹车、转向)→ 必选R52。R52原生支持ASIL-D,硬件级错误检测&#…...
什么是计算机中的 “终端”?
在我们初学编程的时候,会遇到一个很重要的概念 ——终端。那它到底是什么呢? 在计算机领域,终端就像是我们和计算机进行对话的 “窗口”。我们可以在这个窗口里,用一些特定的命令来告诉计算机该做什么。比如,让计算机…...
LeetCode刷题---字符串---819
最常见的单词 819. 最常见的单词 - 力扣(LeetCode) 题目: 给你一个字符串 paragraph 和一个表示禁用词的字符串数组 banned ,返回出现频率最高的非禁用词。题目数据 保证 至少存在一个非禁用词,且答案 唯一 。 par…...
CodeFire:为AI编程助手构建持久记忆层,实现连续协作开发
1. 项目概述:为AI编程助手构建持久记忆层 如果你和我一样,深度依赖Claude Code、Gemini CLI这类AI编程助手来辅助日常开发,那你一定遇到过这个让人头疼的问题:每次开启一个新的会话,AI助手就像得了“健忘症”…...
AI与空间计算融合:在Vision Pro上部署与优化机器学习模型的工程实践
1. 项目概述:当苹果Vision Pro遇上开源AI,一场空间计算的“化学反应”最近在GitHub上闲逛,发现了一个挺有意思的项目,叫imclab/Apple-Vision-PRO-AR-VR-XR-AI。光看这个仓库名,信息量就爆炸了,直接把苹果的…...
代码注释翻译工具ccmate:精准解析与翻译,提升跨语言编程效率
1. 项目概述:一个为开发者设计的代码片段翻译工具如果你和我一样,经常需要查阅、学习或者借鉴一些来自不同语言社区的代码,比如在GitHub上看到一个很棒的Python库,但它的文档和注释全是日文;或者想快速理解一段用西班牙…...
AI应用落地实战:从算法选型到工程部署的可持续架构
1. 项目概述:不只是概念,更是落地的工具箱“人工智能”这个词,现在几乎无处不在,从手机里的语音助手,到新闻里讨论的自动驾驶,再到电商平台给你推荐的商品。但很多时候,我们听到的要么是过于宏大…...
MouseTester终极指南:专业鼠标性能测试工具完全解析
MouseTester终极指南:专业鼠标性能测试工具完全解析 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mo/MouseTester 想要精准评估你的鼠标性能表现吗?无论是游戏玩家追求极致的操作响应,还是设计师需要精准…...
内容创作团队如何通过Taotoken调度不同模型完成多样化文案生成
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 内容创作团队如何通过Taotoken调度不同模型完成多样化文案生成 应用场景类,描述一个内容创作团队的工作流,…...
无标签数据下的模型评估:SUDO方法与可靠性-完整性曲线实战指南
1. 项目概述:当数据没有“标准答案”时,我们如何评价模型?在机器学习项目的实际落地中,我们常常会陷入一个尴尬的境地:模型训练好了,但用来评估它性能的“黄金标准”测试集,要么不存在ÿ…...
CANN/GE图引擎API-添加数据边
AddDataEdge 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前…...
CANN / runtime 内存语义同步
内存语义同步 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 内存语义同步机制允许用户基于通用Device内存实现同步。与Event/Notify同步机制不同,基于内存语义的同步机制还支持算子作为同…...
开源技能模块开发实战:从微内核架构到插件化生态构建
1. 项目概述:从开源项目标题到技能协作生态的深度解读看到mogglemoss/openclaw-fellow-aiden-skill这个项目标题,我的第一反应是:这又是一个典型的现代开源协作项目。它遵循了[组织或个人]/[项目名]-[关联项目]-[功能模块]的命名范式。这种命…...
