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 += readeri + " ";

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 += readeri + " ";

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#教程 目录

相关推荐
NiceCloud喜云15 小时前
Claude Code Routines 实战:三种触发器跑通云端自动化编码
android·运维·数据库·人工智能·自动化·json·飞书
辞忧九千七15 小时前
Redis 单机一主二从主从复制完整搭建指南
数据库·redis·缓存
lzhdim15 小时前
SQL 入门 16:SQL 事务隔离级别与死锁解析(易懂)
数据库·sql
AI 小老六16 小时前
Claude Code 如何压缩上下文:Microcompact、Prompt Cache 与 cache_edits 工程拆解
数据库·人工智能·ai·语言模型·架构·系统架构
Chasing__Dreams16 小时前
Redis--基础知识点--32--redis底层存储结构
数据库·redis·缓存
不总是16 小时前
[2026最新] Windows 免安装版 MySQL 8 详细安装配置教程(ZIP 压缩包版)
数据库·windows·mysql
tedcloud12317 小时前
DBX部署教程:打造支持AI SQL助手的数据库管理环境
数据库·人工智能·sql
野生技术架构师17 小时前
我有个大胆的想法,用 PostgreSQL 代替 Redis
数据库·redis·postgresql
cfm_291417 小时前
Redis ZSet 有序集合详解
数据库·redis·缓存
瀚高PG实验室17 小时前
V4.5.6.1授予普通用户监控类系统表及视图的查询权限
数据库·瀚高数据库