ExecuteNonQuery() 返回值
ADO.NET 数据命令使您能够直接对数据库或其他数据源执行命令,而不需要数据集或数据适配器。有关更多信息,请参见 Visual Studio 中的 DataCommand 对象介绍。
1.
可针对数据库执行的某些类型的数据命令除了返回一个指出命令成功的值以外不返回任何值。这些命令类型包括:
- 数据库定义 (DDL) 命令,用于创建和管理数据库结构(如表和存储过程)。
- 更新命令(“更新”(Update)、“插入”(Insert) 和“删除”(Delete) 语句)。
必须使用数据库命令执行 DDL 操作;没有其他方法可以在 ADO.NET 中执行这些任务。
如果正在使用数据集,则不需要使用单独的数据命令执行数据库更新。而是使用数据适配器更新数据库。有关更多信息,请参见 Visual Studio .NET 中的数据集更新。但是,如果使用的不是数据集,则可以直接向数据库发送更新命令。有关数据集相对于数据命令的优点的更多信息,请参见数据访问策略建议。
对于这两种类型的命令,命令都返回一个整数指示操作的成功与否。返回值因是要更新记录还是发出 DDL 命令而异:
- 如果要创建或修改数据库结构,当操作成功时返回值为 -1。
- 如果要更新记录,则返回值指示受到该操作影响的记录数。
在两种情况下,如果操作失败,命令都返回零。
注意 ExecuteNonQuery() 返回值 问题
前些日子作一些数据项目的时候 在ADO.NET 中处理 ExecuteNonQuery()方法时,总是通过判断其返回值是否大于0来判断操作时候成功 。但是实际上并不是这样的,好在处理的数据操作多时 修改, 插入, 删除,否则的话问题就有点打了,都是些基础的知识,但是很重要个人觉得有必要记下来。
ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,对于这种更新操作 用我们平时所用的是否大于0的判断操作应该没有问题而且比较好,但是对于其他的操作如对数据库结构的操作,如果操作成功时返回的却是-1,这种情况跟我们平时的思维方式有点差距所以应该好好的注意了,例如对数据库共添加一个数据表的Create操作,当创建数据表成功时返回-1,如果操作失败的话(如数据表已经存在)往往会发生异常,所以执行这种操作时最好用try--catch--语句来容错。
例如用ExecuteNonQuery()方法执行create和alter操作
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' 的对象。
From:MSDN
备注
您可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。
虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充。
对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。
http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcommand.executenonquery(VS.80).aspx
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.executenonquery.aspx
Me:经实验鉴定SqlCommand.ExecuteNonQuery()执行Create,Drop时成功则返回-1,失败则发生异常.OleDbCommand.ExecuteNonQuery()执行Create,Drop时成功则返回0,失败也发生异常
转载于:https://www.cnblogs.com/jkyweb/archive/2010/11/24/1886340.html
ExecuteNonQuery() 返回值相关推荐
- 注意 ExecuteNonQuery() 返回值
注意 ExecuteNonQuery() 返回值 ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 U ...
- c# mysql executenonquery_C#中ExecuteNonQuery()返回值注意点分析
本文实例讲述了C#中ExecuteNonQuery()返回值注意点.对于C#数据库程序设计有一定的借鉴价值.分享给大家供大家参考之用.具体分析如下: 首先,在查询某个表中是否有数据的时候,我们通常用E ...
- ExecuteNonQuery()返回值注意点
查询某个表中是否有数据的时候,我用了ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否.结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解, ...
- ExecuteNonQuery()返回值
本文导读:虽然 ExecuteNonQuery 不返回任何行,但映射到参数的任何输出参数或返回值都会用数据进行填充.对于 UPDATE.INSERT 和 DELETE 语句,返回值为该命令所影响的行数 ...
- ExecuteNonQuery返回值问题
大家都知道执行ExecuteNonQuery插入记录的时候会返回受影响的行数. 在一次操作通过该返回值判断Insert是否成功的时候发现返回值是-1,查看数据库记录已经插入. 再查看程序发现是通过存储 ...
- 注意 ExecuteNonQuery() 返回值 问题
前些日子作一些数据项目的时候 在ADO.NET 中处理 ExecuteNonQuery()方法时,总是通过判断其返回值是否大于0来判断操作时候成功 .但是实际上并不是这样的,好在处理的数据操作多时 修 ...
- ExecuteNonQuery()返回值问题
1.使用update,insert,delete等对数据库中表行进行操作的时候,返回值为所操作的行数(若该条语句未作用在任何一行,则返回0) 2.使用alter添加表空间数据文件,create创建表, ...
- SqlCommand.ExecuteNonQuery()的返回值问题
用法: sqlcommand.ExecuteNonQuery() 执行select之后,总是返回-1的 sqlcommand.ExecuteNonQuery()返回的是受影响的行数,只对update, ...
- 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值...
关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...
最新文章
- python练习_Python随笔31:Python基础编程练习题27~28
- 计算机能力应用免考证明,青岛学信NIT认证可以免考《管理系统中计算机的应用》笔试+实践...
- matlab的边缘检测方法,MATLAB应用—Matlab多种图像边缘检测方法
- div置于页面底部_浏览器渲染页面的原理及流程
- C语言使用找出二维数组所有元素中的最大值,下标
- pyqt界面屏幕分辨率自适应_后台系统界面设计踩过的那些坑
- 如何在宝塔面板启用 ASP.NET CORE 网站并自动申请 HTTPS 证书
- 利用SNMP4J实现 Snmp Trap 完整例子
- 职场新鲜人:为什么女生拼不过男生?
- 离散数学-集合运算基本法则
- Mac控制中心使用方法
- 微信小程序自定义icon
- 思维模型 SWOT分析
- java war 打包、解压命令
- 未登录词处理优秀论文——Pointing the Unknown Words
- 【JDBC】JDBC
- 厘米换算英尺英寸 (15 分)如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是?
- 如何确定自己浏览器的User-Agent信息
- Ubuntu 22.04下载安装VMware Workstation Pro 17
- npm ERR! code EINTEGRITY 错误原因记录