当前位置: 首页 > news >正文

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

 

相关文章:

  • LeetCode 热门100题-无重复字符的最长子串
  • 用大模型学大模型03-数学基础 概率论 随机变量 概率分布
  • 如何在OCP部署Java应用程序
  • 在计算机视觉任务中,Transformer架构与CNN各自的优势和劣势有哪些?
  • 【Leetcode 每日一题】1552. 两球之间的磁力
  • 工业光源中的偏光板
  • ArrayList、LinkedList、Vector
  • CSS 实现下拉菜单效果实例解析
  • 什么是偏光环形光源
  • 深入浅出CSS复合选择器:掌控元素关系与层级选择
  • 【linux】在 Linux 服务器上部署 DeepSeek-r1:70b 并通过 Windows 远程可视化使用
  • Java面试第一山!《集合》!
  • 差分的性质
  • STM32 是什么?同类产品有哪些
  • 用SiliconFlow的接口调用 deepseek-ai/Janus-Pro-7B 模型生成 图像
  • Java面试宝典:说下Spring Bean的生命周期?
  • 制造业物联网的十大用例
  • 【机器学习实战】kaggle背包价格预测(堆叠的实战用法)
  • 03【FreeRTO队列-如何获取任务信息与队列的动静态创建】
  • yarn add electron --dev --platform=win64 报错 certificate has expired 2025年 解决办法
  • 为什么有的公司做很多个网站/企业网站设计毕业论文
  • 买了个服务器 怎么做网站/泰安seo推广
  • 南京市建设工程交易中心网站/免费换友情链接
  • 网站排名突然掉没了/注册网址
  • 怎样做聊天网站/长沙seo研究中心
  • 精品课网站开发论文/公司网站建设费