c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法

c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法ExecuteNonQuery方法ExecuteNonQuery方法主要用来更新数据。通常使用它来执行Update、Insert和Delete语句。该方法返回值意义如下:对于Update、Insert和Delete语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为-1。Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下:(1)创建数…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

ExecuteNonQuery方法

ExecuteNonQuery方法主要用来更新数据

通常使用它来执行Update、Insert和Delete语句。

该方法返回值意义如下:

对于Update、Insert和Delete语句,返回值为该命令所影响的行数。

对于所有其他类型的语句,返回值为-1。

Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下:

(1)创建数据库连接。

(2)创建Command对象,并指定一个SQL Insert、Update、Delete查询或存储过程。

(3)把Command对象依附到数据库连接上。

(4)调用ExecuteNonQuery方法。

(5)关闭连接。

下面依次看一看更新、添加和删除操作。

更新记录

下面的代码显示了一个简单的数据库更新操作,其作用是修改学号为“20013150“的学生信息:

string updateQuery=”Update studentInfo set sName=‘小李‘”+”Where ID=‘200131500145‘”;//新建连接

SqlConnection conn=newSqlConnection();

conn.Connectionstring=connectionString;//新建命令对象

SqlCommand cmd=newSqlCommand(updateQuery,conn);//调用命令对象的ExecuteNonQuery方法

conn.Open();int RecordsAffected=cmd. ExecuteNonQuery();

conn.Close();

代码本身非常简单。

但需要注意的是ExecuteNonQuery方法的返回值,这个方法返回命令影响的记录数量。

例如,如果命令是SQL UPDATE语句,则将返回被更新记录的数量。

相似的,当执行INSERT命令时返回插入到数据库的记录的数量。

如果期望命令更新记录,但是ExecuteNonQuery方法返回的值为0,则说明更新操作失败了。

(1)字符串拼接方式

也许读者已经注意到了在上面的代码中updateQuery是在程序中定义的,其操作固定在了程序中,用户无法和应用程序交互,

而在实际中命令应该根据用户输入的信息进行处理,比如用户在文本框中输入了新的用户信息以后单击更新,

然后程序将用户输入的数据更新到数据库。

要达到这个目的,就必须依据用户输入的数据来构造命令。构造命令可以有多种形式。

假设现在已经将用户输入的数据保存到了变量中:

String userName=”小李”;

String userId=”200131500145″;

此时userName和user id变量分别保存了学生姓名和学号,命名可以通过如下拼接命令字符串的形式构造:

string updateQuery=”Update student Set sName=‘ “+username+” ‘ “+”Where ID=‘ “+user id+” ‘ “

这种拼接字符串构造命令的方式是最直接最简单的,但也是最不安全的。

可以采用参数化来实现相同的功能。

(2)参数化方式

SQL Server.NET数据提供程序和OLE DB.NET数据提供程序在指定参数时区别非常大,下面分别介绍。

①在SQL Server .NET数据提供程序中指定参数

SQL Server .NET数据提供程序支持指定的参数。

当命令文本在指定具体命令时,必须指出哪一部分是在运行时进行设置的,也就是必须指出哪部分是参数。

那些可变的部分即参数,它们都必须有一个@前缀。

Update student set sName=@userName where ID=@userid

这个命令中,@userName和@userid为参数,它们的值在运行时是可变的。

当命令中带参数时,构造Command对象的方法和前面的并没有任何不同:

string updateQuery=”Update student Set sName=@username”+”Where ID=@userid” ;

SqlConnection conn=new SqlConnection(connectionString);

SqlCommand cmd=new SqlCommand(updateQuery, conn);

现在就有了包含参数的Command对象。

目前需要做的就是为命令中的每一个参数创建一个Parameter对象。

SqlCommand类提供了一个Parameters集合属性,用以为命令保存所有的参数。

通过调用Parameters集合的Add方法,在集合中添加一个新的参数。

crud. Parameters.Add (” @userName”, userName);

cmd. Parameters.Add(“@userid”, userid);

上面Add方法中的第一个参数为命令中的参数名,后面的userName则是用于定义的变量,保存了用户输入的信息。

除此之外,可以用其他方法创建Parameter对象,然后添加到集合中。

SqlParameter paramUserName= new SqlParameter(“@userName”,SqlDbType.NVarChar,50);

paramUserName.Value=userName;

cmd. Parameters.Add(paramUserName) ;

上面的代码

首先新建了一个SqlParameter对象,命名为paramUserName,该对象对应于命令中的@userName参数,在SqlParameter的构造函数中为参数指定了类型为SqlDbType.NVarChar,长度为50。

接着为paramUserName指定了Value属性,表示在运行时将用这个值代替命令中的@userName。

最后是调用Add方法将参数添加到命令的参数集合中,这一步很容易被初学者忽略,要格外注意。

带参数的命令设置好以后可以和往常一样执行ExecuteNonQuery方法,这并没有任何不同。

除了直接使用SQL语句作为命令以外,还可以使用存储过程作为命令内容。

为了ADO.NET应用程序中执行存储过程,需要把存储过程的名称赋给命令文本,同时将命令的CommandType属性设置为存储过程。

如果存储过程返回值,或者有一些参数,还必须创建参数,并把创建的参数添加到命令的Parameters集合中。

在数据库Student添加如下名为UpdateStudentInfo的存储过程,

代码如下:

CREATE PROCEDUREUpdateStudentInfo

(@userName nvarchar(20),@user id nvarchar(20);

)AS

UpdatestudentInfoSet sName=@userName Where ID=@useridGO

为了执行该存储过程,必须创建一个Command对象并将存储过程的名称传入它的构造函数。

SqlConnection

conn=new SqlConnection(connectionString);

SqlCommand

cmd=new SqlCommand(“UpdateStudentInfo”, conn);

接下来要把命令的CommandType属性设置为StoredProcedure。

cmd.CommandType=CommandType.StoredProcedure;

后续步骤和参数化命令是相同的,先设置参数然后执行对应命令。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194866.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MybatisPlus的IService使用

    这里以user实体类做例子首先编写UserService接口,并继承IServicepublicinterfaceUserServiceextendsIService<User>{}编写UserServiceImpl类,继承ServiceImpl并实现UserService@ServicepublicclassUserServiceImplextendsServiceImpl<UserMapper,User>implementsUser.

  • 联合索引(复合索引)和单个索引[通俗易懂]

    联合索引(复合索引)和单个索引[通俗易懂]背景: 为了提高数据库效率,建索引是家常便饭;那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下。一、联合索引测试注:Mysql版本为5.7.20创建测试表(表记录数为63188):CREATETABLE`t_mobilesms_11`( `id`bigint(20)NOTNUL…

  • 五、分类模型_大五模型包括

    五、分类模型_大五模型包括一、分类模型的定义文章目录一、分类模型的定义二、分类模型类型2.1、逻辑回归2.2、决策树2.3、支持向量机2.4、朴素贝叶斯在机器学习中,我们把机器学习分为监督学习和非监督学习,监督学习就是在一组有标签(有目标)属性的数据集中,我们将数据教给机器学习,让他根据数据中的属性和目标,去看题目答案一样把答案记住。之后再给类似的题目去作一样。我们把数据集中的标签,一般都标为属性,而我们又把属性分为离散属性和连续属性,每一个标签都是可以这样分的。像如果我们预测的属性值的特性是连续属性的话,我们把这种模型称为是

  • 加密芯片硬件协处理器

    加密芯片硬件协处理器通俗来讲,硬件协处理器是CPU内部用于处理特定算法或逻辑运算的硬件电路模块,我们可以把他理解为一个特殊的加速器。硬件协处理器可以用于减轻系统微处理器的特定处理任务负担。例如,数学协处理器可以控制数字处理;图形协处理器可以处理视频绘制。Intelpentium微处理器就包括内置的数学协处理器。一个协处理器通过扩展指令集或提供配置寄存器来扩展内核处理功能。一个或多个协处理器可以通过协处理器接口与CPU内核相连。协处理器可以通过一组专门的、提供的接口的CPU指令来访问。对于加密芯片行业

  • microsoft visual studio最新版本_visual studio 2019下载安装教程

    microsoft visual studio最新版本_visual studio 2019下载安装教程微软已经向MSDN订阅用户提供了VisualStudio2013正式版镜像下载,不过非MSDN用户可以在微软的VisualStudio2013官方网站上下载到正式版镜像(通过下载专业版本,已验证与MSDN版本一致)。下面为大家整理一下个版本下载地址。MicrosoftVisualStudioUltimate2013(简体中文旗舰版)文件名: cn_visual_st

  • sql定义变量的语法是什么_sql 定义变量

    sql定义变量的语法是什么_sql 定义变量有的时候在查询更新数据库的时候,需要多条语句的查询,因此需要多次修改declare可以满足多次执行,但数据只修改一次。declare @local_variabledata_typeDECLARE:定义变量,变量第一个字母是“@”声明时需要指定变量的类型,可以使用set和select对变量进行赋值,在sql语句中就可以使用@local

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号