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

19.4.2 -19.4.4 新增、修改、删除数据

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

需要北风数据库的请留言自己的信箱。

19.4.2 新增数据

数据库数据的新增、修改和删除不同于查询,查询需要返回一个DbDataReader对象,然后使用DbDataReader获得数据,但是新增、修改和删除不需要获得数据,所以这三个操作使用OleDbCommand的ExecuteNonQuery方法即可。

【例 19.8【项目:code19-008】向北风数据库中产品表增加数据。

    ……代码略

        private void button1_Click(object sender, EventArgs e)

        {

            //新建OleDbCommand对象实例

            OleDbCommand command = new OleDbCommand();

            //要执行的SQL语句

            command.CommandText = "insert into 产品 values(82,'红薯',12,3,'每盒12个',12.00,100,10,0,false)";

            //设置OleDbCommand的数据连接为OleDbConnection

            command.Connection = conn;

            int recordCount;

           //执行ExecuteNonQuery,返回受影响的行

            recordCount = command.ExecuteNonQuery();

            MessageBox.Show(recordCount + " 条数据被新增");

        }

运行结果如下图所示:

图19-27 向产品表中新增一条记录

command.CommandText也可以使用类似以下的SQL语句:

    

command.CommandText = "INSERT INTO 产品 ( 产品名称, 供应商ID, 类别ID, 单位数量, 单价, 库存量, 订购量, 再订购量, 中止 ) values('可乐',12,1,'每件10瓶',7.6,40,10,20,false)";

这条SQL语句并没有加上产品ID这一字段,因为该字段是一个自动增加的字段,如果数据表中还有设置了默认值的字段,也可以不需要在SQL语句中加上这些字段。如产品表中“单价”、“库存量”、“订购量”、“再订购量”、“中止”都设置了默认值,因此这几个字段都可以不加在SQL语句中,当新增时,数据库自动会为它们增加上默认值:

command.CommandText = " INSERT INTO 产品 ( 产品名称, 供应商ID, 类别ID, 单位数量 ) values('可乐A',2,1, '每件6')";

图19-28 产品表内增加的数据

注意:请务必小心引号的用法,由于CommandText对应是一个字符串,整个字符串应该用双引号包围,使用的SQL语句中字段的值如果是字符串的,可以使用单引号包围,或者对该值使用转义符+引号:

command.CommandText = "INSERT INTO 产品 ( 产品名称, 供应商ID, 类别ID, 单位数量, 单价, 库存量, 订购量, 再订购量, 中止 ) values(\"可乐\",12,1,\"每件6瓶\",7.6,40,10,20,false)";

【例 19.9【项目:code19-009】使用查询参数的方式增加数据。

    ……代码略

        private void button1_Click(object sender, EventArgs e)

        {

            //新建OleDbCommand对象实例

            OleDbCommand command = new OleDbCommand();

            //要执行的SQL语句

            command.CommandText = "INSERT INTO 产品 ( 产品名称, 供应商ID, 类别ID, 单位数量, 单价) values(?,?,?,?,?)";

            command.Parameters.Add("name", OleDbType.VarChar);

            command.Parameters["name"].Value = "酸梅汁A";    //DBNull.Value;

            command.Parameters.Add("SupplierID", OleDbType.Integer);

            command.Parameters["SupplierID"].Value = 12;

            command.Parameters.Add("TypeID", OleDbType.Integer);

            command.Parameters["TypeID"].Value = "1";

            command.Parameters.Add("info", OleDbType.VarChar);

            command.Parameters["info"].Value = "每件23瓶";

            command.Parameters.Add("price", OleDbType.Currency);

            command.Parameters["price"].Value = "5.0";

            //设置OleDbCommand的数据连接为OleDbConnection

            command.Connection = conn;

            int recordCount;

            //执行ExecuteNonQuery,返回受影响的行

            recordCount = command.ExecuteNonQuery();

            MessageBox.Show(recordCount + " 条数据被新增");

        }

使用查询参数方式时,需要注意ParametersOleDbType必须要和数据表中字段的类型相对应,其次还要与字段规则相对应,例如,产品表中“产品名称”设置了“必需”,如果使用以下语句:

command.Parameters["name"].Value = DBNull.Value;

那么会抛出错误提示:

由于其 Required 属性设置为真(True),字段 '产品.产品名称' 不能包含 Null 值。在此字段中输入一个数值。

19.4.3 修改数据

【例 19.10【项目:code19-010】修改产品表中的数据。

    ……代码略

        private void button1_Click(object sender, EventArgs e)

        {

            //新建OleDbCommand对象实例

            OleDbCommand command = new OleDbCommand();

            //要执行的SQL语句

            command.CommandText = "update 产品 set 产品名称='沙棘汁',供应商ID=3 where 产品名称='可乐A'";

            //设置OleDbCommand的数据连接为OleDbConnection

            command.Connection = conn;

            int recordCount;

            //执行ExecuteNonQuery,返回受影响的行

            recordCount = command.ExecuteNonQuery();

            MessageBox.Show(recordCount + " 条数据被修改");

        }

        //使用查询参数方式:

        private void button2_Click(object sender, EventArgs e)

        {

            //新建OleDbCommand对象实例

            OleDbCommand command = new OleDbCommand();

            //要执行的SQL语句

            command.CommandText = "update 产品 set 产品名称=?,供应商ID=? where 产品名称=?";

            command.Parameters.Add("name", OleDbType.VarChar);

            command.Parameters["name"].Value = "红茶";

            command.Parameters.Add("SupplierID", OleDbType.Integer);

            command.Parameters["SupplierID"].Value = 3;

            command.Parameters.Add("oldname", OleDbType.VarChar);

            command.Parameters["oldname"].Value = "酸梅汁A";

            //设置OleDbCommand的数据连接为OleDbConnection

            command.Connection = conn;

            int recordCount;

            //执行ExecuteNonQuery,返回受影响的行

            recordCount = command.ExecuteNonQuery();

            MessageBox.Show(recordCount + " 条数据被修改");

        }

   

19.4.4 删除数据

【例 19.11【项目:code19-011】删除产品表中的数据。

    ……代码略

        private void button1_Click(object sender, EventArgs e)

        {

            //新建OleDbCommand对象实例

            OleDbCommand command = new OleDbCommand();

            //要执行的SQL语句

            command.CommandText = "delete * from 产品 where 产品名称='红茶'";

            //设置OleDbCommand的数据连接为OleDbConnection

            command.Connection = conn;

            int recordCount;

            //执行ExecuteNonQuery,返回受影响的行

            recordCount = command.ExecuteNonQuery();

            MessageBox.Show(recordCount + " 条数据被删除");

    }

     使用查询参数方式删除数据的代码同之前的例子,这里不再累述。

学习更多vb.net知识,请参看vb.net 教程 目录

学习更多C#知识,请参看C#教程 目录

http://www.dtcms.com/a/20072.html

相关文章:

  • SpringBoot服务器的采购上,服务器的数量和性能配置如何取舍【无标题】
  • Day2 25/2/15 SAT
  • electron打包基本教程
  • Flutter中 List列表中移除特定元素
  • QEMU 搭建arm linux开发环境
  • 纪念日倒数日项目的实现-【纪念时刻-时光集】
  • Debezium系列之:时区转换器,时间戳字段转换到指定时区
  • SpringCloud Alibaba
  • tensorflow环境中已安装库
  • 【Java集合二】HashMap 详解
  • 【NLP 24、模型训练方式】
  • Leetcode 算法题 88. 合并两个有序数组
  • 【含文档+源码】基于Web的在线课堂测试课程考评系统的开发与实现
  • GPQA (Graduate-Level Google-Proof QA Benchmark) 数据集
  • 图像处理篇---基本OpenMV图像处理
  • HackerRank C++面试,中等难度题目 - Attribute Parser
  • Bandana论文阅读
  • 复杂电磁环境下无人机自主导航增强技术研究报告——地磁匹配与多源数据融合方法,附matlab代码
  • 基于多元高斯分布的异常检测技术原理与实现
  • lean4安装
  • 论文阅读2——S波段宽波束圆极化天线设计
  • 【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑤】
  • 初阶数据结构:树---二叉树的链式结构
  • LeetCode1706
  • 使用 React 16+Webpack 和 pdfjs-dist 或 react-pdf 实现 PDF 文件显示、定位和高亮
  • [Java网络安全系列面试题] GET 和 POST 的区别在哪里?
  • 1441. 用栈操作构建数组 中等
  • 《当DeepSeek遇上豆包:AI大模型的华山论剑》
  • 我用 Cursor 开发了一款个人小记系统
  • B站视频同步思维导图(全)