SqlCommand.ExecuteNonQuery()方法的使用注意
SqlCommand.ExecuteNonQuery 方法对数据库连接执行 Transact-SQL 语句并返回受影响的行数。但是有个前提:必须是UPDATE、INSERT 和 DELETE 语句。而对于所有其他类型的语句,返回值则为 -1或0。如果发生回滚,返回值为 -1
对于增删改数据操作,根据ExecuteNonQuery()方法执行结果是否大于0(mark= Comm.ExecuteNonQuery()>0?true:false; )来判断数据库操作是否成功是可以的。对于Update,Insert,Delete语句执行成功时返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚的话返回值为-1。所以利用ExecuteNonQuery()返回值是否大于0来判断操作是否成功是可以的。但是还有一些情况不是这样:
1,使用ExecuteNonQuery()执行Select查询操作,不管是否成功,结果总是会返回-1. 通常我们是建议用该方法执行Select的,可以使用ExecuteScalar(),ExecuteReader(),SqlDataAdapter执行。
2,使用ExecuteNonQuery() 执行存储过程。这分两种情况:
1)存储过程带有返回值(传出参数)时,
把数据库中受影响的行数赋给返回值,这时得到的返回值是受影响的函数(大于或等于0的整数).
把某个值赋给返回值.这时得到的返回值就是这个值。
2)存储过程没有返回值
执行成功后总是返回-1。
(我们可能会想,当执行增删改操作的存储过程即使没有返回值也应该得到受影响的行数 , 但是.我们在ado.net中执行存储过程的时候,dotnet 自动为给了存储过程一个默认值:set nocount on;
所以给我们的感觉是执行存储过程默认返回 -1 )
3,对数据结构的操作将会返回-1,例如执行Create操作,当创建数据表成功时返回-1,如果操作失败的话(数据表已经存在)往往会发生异常,所以执行这种操作时最好用try–catch–语句来容错。
用ExecuteNonQuery()方法執行create操作
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=PSDB;Integrated Security=SSPI");string str = "CREATE TABLE aaa ( " +
"[ID] [int] IDENTITY (1, 1) NOT NULL , " +
"[BasicID] [int] NULL ," +
"[AdoptedName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ," +
"[AdoptedSex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ," +
"[AdoptBirthday] [smalldatetime] NULL ," +
"[AdoptedType] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +
"[ApprTime] [smalldatetime] NULL ," +
"[Remark] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL " +
") ON [PRIMARY] ";SqlCommand comm = new SqlCommand(str, conn);
int i = 10;
try
{conn.Open();
i = comm.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{Response.Write(ex.Message);
}Response.Write(i.ToString());
如果执行成功的话,返回值为-1,如果数据表存在返回异常:数据库中已存在名为‘aaa’的对象。
SqlCommand.ExecuteNonQuery()方法的使用注意相关推荐
- java executenonquery_为什么 SqlCommand.ExecuteNonQuery() 方法返回 -1
为什么 SqlCommand.ExecuteNonQuery() 方法返回 -1 不知道大家在使用ExecuteNonQuery方法的时候有没有碰到过返回-1的情况.ExecuteNonQuery方法 ...
- SqlCommand.ExecuteNonQuery 方法
一.ExecuteNonQuery 方法是什么? SqlCommand的一个类,用于包含update.insert.delete.select的Transact-sql 语句中来修改数据库中的数据,并 ...
- 关于ExecuteNonQuery() 方法
关于ExecuteNonQuery() 方法 以前对这个一直都没在意,基本上都没有用其返回值,查了一下MSDN,如下: SqlCommand.ExecuteNonQuery 方法对连接执行 Trans ...
- SqlCommand对象-ExecuteNonQuery()方法的使用
Command对象的ExecuteNonQuery()方法执行任何不从数据库返回结果集的命令,包括SQL SELECT.UPDATE.DELETE语句.没有返回数值的存储 过程.CREATE TABL ...
- ExecuteNonQuery()方法发即:是指执行非查询SQL命令,如:增、删、改等
前些日子作一些数据项目的时候 在ADO.NET 中处理 ExecuteNonQuery()方法时,总是通过判断其返回值是否大于0来判断操作时候成功 .但是实际上并不是这样的,好在处理的数据操作多时 修 ...
- SqlCommand.ExecuteNonQuery()的返回值问题
用法: sqlcommand.ExecuteNonQuery() 执行select之后,总是返回-1的 sqlcommand.ExecuteNonQuery()返回的是受影响的行数,只对update, ...
- 【机房重构】C#与数据库访问技术之ExecuteNonQuery方法介绍及实例、SQL注入问题
ExecuteNonQuery()方法介绍: 1.ExecuteNonQuery()方法是SqlCommand类的一个方法 2.ExecuteNonQuery方法主要用来更新数据.通常使用它来执行Up ...
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为 ...
- c# mysql executenonquery_C#与数据库访问技术总结(八)之ExecuteNonQuery方法
ExecuteNonQuery方法 ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.In ...
最新文章
- linux系统下如何查看cpu能同时跑几个线程_探讨基于Linux的NUMA系统
- SQL Server 2008(三) T-SQL(常用全局变量)
- 计算机视觉和模式识别领域SCI期刊介绍
- Longest Substring with At Most Two Distinct
- Mpvue+koa开发微信小程序——腾讯云开发环境的搭建及部署实现真机测试
- MapReduce案例一:天气温度
- Intel 64/x86_64/IA-32/x86处理器段寄存器 - 32位段寄存器/64位段寄存器
- Java学生管理系统使用线性表任务台程序
- Flask 的路由系统 FBV 与 CBV
- 【AI】人工智能之深度学习(1)—— 入门
- 仿人机器人运动控制技术探讨
- VFB直接使用TCP发送电子邮件源码
- 问道手游服务器修改密码,问道手游去哪改密码 问道手游怎么更换修改密码手机号...
- Ubuntu20.04安装fcitx中文输入法(五笔拼音)
- oracle导入多个dmp文件到一个用户,Oracle dmp文件导入(还原)到不同的表空间和不同的用户下...
- 卷积神经网络 CNN 简述
- linux 多wan口 路由器,真假多WAN负载均衡
- Deep Reinforcement Learning for Sepsis Treatment文献阅读记录
- 程序员假期在家中身亡,凌晨发朋友圈劝告大家:身体第一,身体是革命的本钱!...
- 耗时整整3个月,我梳理了200道Android面试基础(上)【面试必考,全网最全,每天一遍】