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.mzph.cn/web/69854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

若依系统环境搭建记录

开源若依系统网上资料也很全的,本篇博文记录下自己搭建环境过程中遇到的一些问题。 配置Maven和编辑器选择 我懒得配置Eclipse了,直接用vscode作为编辑器,后面构建运行都用命令行。 配置数据库连接 按照mysql5.7按网上教程即可&#xff1…

Redis——优惠券秒杀问题(分布式id、一人多单超卖、乐悲锁、CAS、分布式锁、Redisson)

#想cry 好想cry 目录 1 全局唯一id 1.1 自增ID存在的问题 1.2 分布式ID的需求 1.3 分布式ID的实现方式 1.4 自定义分布式ID生成器(示例) 1.5 总结 2 优惠券秒杀接口实现 3 单体系统下一人多单超卖问题及解决方案 3.1 问题背景 3.2 超卖问题的…

解锁豆瓣高清海报(三)从深度爬虫到URL构造,实现极速下载

脚本地址: 项目地址: Gazer PosterBandit_v2.py 前瞻 之前的 PosterBandit.py 是按照深度爬虫的思路一步步进入海报界面来爬取, 是个值得学习的思路, 但缺点是它爬取慢, 仍然容易碰到豆瓣的 418 错误, 本文也会指出彻底解决旧版 418 错误的方法并提高爬取速度. 现在我将介绍…

3D可视化定制:开启个性化消费新时代

3D可视化定制是一种将产品的三维模型与可视化技术相结合,以满足消费者个性化需求的服务。以下是对3D可视化定制的详细介绍: 一、定义与原理 3D可视化定制是指利用三维建模技术和可视化工具,为消费者提供一个直观、互动且高度个性化的定制平…

【OJ项目】深入剖析 JudgeServiceImpl 类:题目的判题逻辑详解

《深入剖析 JudgeServiceImpl 类:题目的判题逻辑详解》 一、引言 在编程竞赛或者在线编程平台中,判题服务是核心功能之一。它负责对用户提交的代码进行编译、执行,并根据预设的测试用例判断代码的正确性。今天我们就来详细剖析一个名为 Jud…

MySQL常见错误码及解决方法(1130、1461、2003、1040、2000、1049、1062、1129、2002、1690等)

目录 【问题1】、FATAL: error 1130: Unknown error 1130 【问题2】、FATAL: error: 1461 【问题3】、ERROR 2003 (HY000): Cant connect to MySQL server on "" (113) 【问题4】、FATAL: error 2003: Cant connect to MySQL server on 172.19.111.151 (111) 【问…

5种解决方式来应对deepseek暂时无法回答

在工作中,你是否常常遇到deepseek回复“暂时无法回答”的情况?根据某权威机构的调研数据显示,约73%的用户在使用此类工具时遇到过类似问题,这严重影响了工作效率和体验。本文将为你提供5种实测有效的解决方法,帮助你快…

单调队列与栈

一.题 1. 思路&#xff1a; 构建小压大的单调递减栈&#xff0c;对于每个栈的元素都进行处理并加到结果上 class Solution { public:int sumSubarrayMins(vector<int>& arr) {int stk[10000000],top 0;long long ans 0;for(int i 0;i<arr.size();i){while(top…

在带有Intel Arc GPU的Windows上安装IPEX-LLM

在带有Intel Arc GPU的Windows上安装IPEX-LLM 在带有Intel Arc GPU的Windows上安装IPEX-LLM先决条件安装 GPU 驱动安装 Visual Studio 2022 社区版安装 Intel oneAPI Base Toolkit安装 IPEX-LLM创建虚拟环境环境验证 可能遇到的问题 在带有Intel Arc GPU的Windows上安装IPEX-LL…

AWS上基于高德API验证Amazon Redshift里国内地址数据正确性的设计方案

该方案通过无服务架构实现高可扩展性&#xff0c;结合分页查询和批量更新确保高效处理海量数据&#xff0c;同时通过密钥托管和错误重试机制保障安全性及可靠性。 一、技术栈 组件技术选型说明计算层AWS Lambda无服务器执行&#xff0c;适合事件驱动、按需处理&#xff0c;成…

03-微服务01(服务拆分、RestTemplate,nacos、OpenFeign、日志)

之前我们学习的项目一是单体项目&#xff0c;可以满足小型项目或传统项目的开发。而在互联网时代&#xff0c;越来越多的一线互联网公司都在使用微服务技术。 从谷歌搜索指数来看&#xff0c;国内从自2016年底开始&#xff0c;微服务热度突然暴涨&#xff1a; 那么&#xff1…

SPSS—回归分析

一、如何选择 回归方法的选择是根据因变量的类型进行选择&#xff0c;无论自变量是哪种类型。 如果因变量&#xff0c;也就是目标变量是连续的数值型变量&#xff0c;当自变量也是连续数值型&#xff0c;研究自变量是否对因变量有影响。选择普通的线性回归即可&#xff0c;根…

2.SpringSecurity在mvc项目中的使用

SpringSecurity认证过程 参考 来源于黑马程序员&#xff1a; 手把手教你精通新版SpringSecurity 设置用户状态 用户认证业务里&#xff0c;我们封装User对象时&#xff0c;选择了三个构造参数的构造方法&#xff0c;其实还有另一个构造方法&#xff1a; public User(Strin…

Java数组二:数组的使用

for-each循环 打印数组所有元素 public class Demo04 {public static void main(String[] args) {int[] num {1,5,2,3,4};for (int num1:num) {System.out.println(num1);}} }多维数组 多维数组可以看成是数组的数组&#xff0c;比如二维数组就是一个特殊的一维数组&#x…

JAVA EE初阶 - 预备知识(一)

一、管道 在计算机编程和操作系统环境中&#xff0c;输入、输出和错误管道是用于在不同进程或程序之间传递数据和信息的重要机制&#xff0c;下面分别对它们进行详细介绍&#xff1a; 输入管道&#xff08;Standard Input&#xff0c;stdin&#xff09; 定义&#xff1a;输入…

STM32HAL库快速入门教程——常用外设学习(2)

目录 一、STM32HAL库开发&#xff08;8&#xff09;——CubeMX配置DMA 1.1、什么是DMA&#xff1f; 1.2、内存内存之间的传输&#xff08;单次&#xff09; ​编辑 1.3、内存外设之间的传输&#xff08;ADC&#xff09; 二、STM32HAL库开发&#xff08;9&#xff09;——…

Spring Boot 整合 SSE(Server-Sent Events)

1、简述 SSE&#xff08;Server-Sent Events&#xff09;是一种基于HTTP协议的单向通信机制&#xff0c;允许服务器向浏览器持续发送实时更新。与WebSocket不同&#xff0c;SSE更简单&#xff0c;使用HTTP/1.1协议即可&#xff0c;不需要额外的协议升级。 SSE的特点&#xff…

汽车ECU实现数据安全存储的一种方案

一、 综述 在车辆ECU中总是有一些密钥或重要数据需进行机密性保护&#xff0c;但因产品选型、成本等考虑&#xff0c;导致一些ECU的芯片不支持硬件安全模块&#xff08;例如HSM、TEE等&#xff09;。此时&#xff0c;为保障数据的机密性&#xff0c;可考虑通过软件实现数据的安…

十进制数到十六进制数的转换

十进制数x&#xff0c;若能表示为&#xff0c;n为大于等于0的整数。ni4j。i取值为0、1、2和3。综合i和j&#xff0c;若i为0&#xff0c;则该16进制数为1后面加j个0&#xff1b;若i为1&#xff0c;则该16进制数为2后面加j个0&#xff1b;若i为2&#xff0c;则该16进制数为4后面加…

基于YoloV11+PaddleOCR的车牌检测系统

文章目录 一、CCPD数据集进行处理1.1 从文件夹构建txt格式数据集1.2 运行脚本按照8&#xff1a;2划分训练集&#xff0c;测试集 二 、YOLOV11训练模型2.1 编写car_plate.yaml文件2.2 编写train脚本&#xff1a;2.3 训练过程 三、PaddleOCR识别车牌号3.1 安装paddleocr&#xff…