c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法
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;
后续步骤和参数化命令是相同的,先设置参数然后执行对应命令。
c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法相关推荐
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为 ...
- .NET/C#大型项目研发必备(7)--DataAccess数据库访问技术
前言:本系列文章适合有初/中级.NET知识的同学阅读. (1)本系列文章,旨在讲述研发一个中大型项目所需要了解的一系列"基本构件",并提供这些"基本构件"的[最 ...
- ODBC OLEDB ADO等数据库访问技术
花了点时间理了一下数据库访问技术相关的东西,一般地,一个数据库产品的发布后,相应地,会为开发者提供一套访问改数据库的接口,比如MySql提供的C API,可以通过这些数据库产品本身的API进行数据库操 ...
- VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程.
VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程. 2013-02-20 1.数据库访问技术 a.JET与DAO JET(Joint Engine Technology)数 ...
- c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo) 一.三种数据库的主要对比 数据库类型 特点 Microsoft Access 桌面数据库.数据库载体是单个文件 ...
- 数据库访问技术的总结 一
以下几篇对数据库的访问技术,做一个完整的梳理,已备后来需要时查阅. 一.嵌入式SQL的处理过程 将书写的SQL语句嵌入到主语言中,主语言一般如c.c++.java等.对于这种嵌入式语言(ESQL),R ...
- Spring+Mybatis+Mysql搭建分布式数据库访问框架
一.前言 用Java开发企业应用软件, 经常会采用spring+MyBatis+MySQL搭建数据库框架.如果数据量很大,一个mysql库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...
- QT数据库访问技术简介
目录 背景介绍 功能对比 QT中数据库操作常用类介绍 用法实例 数据准备 创建实体类 创建数据库访问类 个人总结 关于如何获取数据库执行过程中的错误以及判断SQL语句执行是否成功执行 关于参数化SQL ...
- jdbc mysql ppt,JAVAWEB数据库访问ppt课件.ppt-资源下载人人文库网
JAVA WEB数据库访问ppt课件.ppt 数据库访问 夏汛 泸职院信息工程系 学习目标 能够使用JDBC访问数据库 JDBC驱动程序的类型 JDBC ODBC桥 访问access 只能通过JDBC ...
最新文章
- dataframe按行按列选择方法
- 安装ie浏览器的js脚本调试工具
- ggplot2箱式图两两比较_R绘图 第四篇:绘制箱图(ggplot2)
- 解决问题:无法对 System程序集 添加Fakes程序集
- php秒数怎么转换为时间格式,php将秒数转换为时间(年、月、日、小时…)
- python中文转拼音不用第三方库_又一个奇葩要求,Python是如何将“中文”转“拼音”的?...
- android支付宝余额怎么做,android实现类似于支付宝余额快速闪动的效果
- hiho1095(二分)
- 一个bootstrap.css的使用案例
- paip..net VS2010提示当前上下文中不存在名称的解决
- qtp11安装及入门
- c语言运行太短怎么毡筒,C语言程序设计 最简单的C程序设计.ppt
- Sator提供其Orca流动性池的六周,增长更新一览
- 软件企业认定条件(双软企业认定条件2023)
- Unsupervised Cross-Dataset Transfer Learning for Person Re-identification阅读总结
- android音乐播放器之歌词下载、处理、开始、同步
- Ubuntu安装eclipse
- 【mcuclub】超声波测距模块HC-SR04
- 【PyTorch】PyTorch搭建神经网络处理图片分类的完整代码
- QCM6490启动流程梳理
热门文章
- 在linux解压文件夹,在linux 下解压 rar 文件
- mysql 取消缺省值_MySQL中各参数的默认值你认为有哪些是不合理的?
- (译)假如猫从世界上消失了
- 华为手机nfs是什么意思_如何配置NFS?
- CAD文件怎么转换成图片?教你简单方法
- 【机器学习】什么是特征缩放?如何去实现特征缩放?
- alibaba.jym.item.external.goods.status.batch.query( 交易猫外部商家商品状态批量查询接口 )
- 电脑怎么改图片格式?图片转格式怎么转?
- MyEclipse Some code changes cannot be hot swapped into a running virtual machine错误
- 基于单片机的嵌入式系统的典型的应用程序框架设计