(原创)ADO.NET中ExecuteNonQuery() 返回值问题

 

最近,老是用到cmd.ExecuteNonQuery(),然后在判断返回值的问题上出现了问题,索性就自己试验了以下执行不同操作时的返回值。

这是此函数的官方说明(下图):

1.建表:

 

 1 private void CreateTable()
 2  2         {
 3  3             try
 4  4             {
 5  5                 string createTableSql = @"create table dbo.TestTable([Data1]  [varchar](50) NULL)";
 6  6                 cmd.Connection = conn;
 7  7                 cmd.CommandText = createTableSql;
 8  8                 conn.Open();
 9  9                 int resultCount = cmd.ExecuteNonQuery();
10 10                 Console.WriteLine(string.Format("创建表成功的返回值为:{0}!", resultCount));
11 11                 Console.ReadKey();
12 12             }
13 13             catch (Exception ex)
14 14             {
15 15                 Console.WriteLine(string.Format("Method:CreateTable异常,异常信息为:{0}", ex.Message.ToString()));
16 16                 Console.ReadKey();
17 17             }
18 18             finally
19 19             {
20 20                 conn.Close();
21 21             }
22 22         }
View Code

 

1)当表不存在时:

 

此时,ExecuteNonQuery()的返回值为-1;

2)当表存在时:

此时,会抛异常;

2.向表insert数据:

 1 try
 2             {
 3                 string insertSql = @"insert into dbo.TestTable([Data1]) values('TestData')";
 4                 cmd.CommandText = insertSql;
 5                 cmd.Connection = conn;
 6                 conn.Open();
 7                 int result = cmd.ExecuteNonQuery();
 8                 Console.WriteLine(string.Format("向表插入数据成功,ExecuteNonQuery返回值为:{0}!", result));
 9                 Console.ReadKey();
10             }
11             catch (Exception ex)
12             {
13                 Console.WriteLine(string.Format("Method:InsertData异常,异常信息为:{0}!", ex.Message.ToString()));
14                 Console.ReadKey();
15             }
16             finally
17             {
18                 conn.Close();
19             }
View Code

1)插入数据成功时:

此时,返回的是受影响的行数(只插入了一行数据);

2)插入数据失败时:

此时,会抛异常(示例为:插入的数据长度超过了数据库字段长度);

3.update表中数据:

 1 try
 2             {
 3                 string updateSql = @"update dbo.TestTable set [Data1] = '已修改'";
 4                 cmd.CommandText = updateSql;
 5                 cmd.Connection = conn;
 6                 conn.Open();
 7                 int result = cmd.ExecuteNonQuery();
 8                 Console.WriteLine(string.Format("更新数据成功,ExecuteNonQuery返回值为:{0}!", result));
 9                 Console.ReadKey();
10             }
11             catch (Exception ex)
12             {
13                 Console.WriteLine(string.Format("Method:UpdateData异常,异常信息为:{0}!", ex.Message.ToString()));
14                 Console.ReadKey();
15             }
16             finally
17             {
18                 conn.Close();
19             }
View Code

1)修改成功时:

此时,返回的时受影响的行数(数据表中只有四条记录);

2)修改失败时:

此时,会抛异常;

4.delete表中数据:

 1 try
 2             {
 3                 string deleteSql = @"delete from dbo.TestTable";
 4                 cmd.CommandText = deleteSql;
 5                 cmd.Connection = conn;
 6                 conn.Open();
 7                 int result = cmd.ExecuteNonQuery();
 8                 Console.WriteLine(string.Format("删除数据成功,ExecuteNonQuery返回值为:{0}!", result));
 9                 Console.ReadKey();
10             }
11             catch (Exception ex)
12             {
13                 Console.WriteLine(string.Format("Method:DeleteData异常,异常信息为:{0}!", ex.Message.ToString()));
14                 Console.ReadKey();
15             }
16             finally
17             {
18                 conn.Close();
19             }
View Code

1)删除成功时:

此时,返回的是受影响的函数(数据表中只有四条记录);

2)删除失败时:

此时,会抛异常;

5.删除表

 

 1 try
 2             {
 3                 string dropSql = @"drop table dbo.TestTable";
 4                 cmd.CommandText = dropSql;
 5                 cmd.Connection = conn;
 6                 conn.Open();
 7                 int result = cmd.ExecuteNonQuery();
 8                 Console.WriteLine(string.Format("删除表成功,ExecuteNonQuery返回值为:{0}!", result));
 9                 Console.ReadKey();
10             }
11             catch (Exception ex)
12             {
13                 Console.WriteLine(string.Format("Method:DropTable异常,异常信息为:{0}!", ex.Message.ToString()));
14                 Console.ReadKey();
15             }
16             finally
17             {
18                 conn.Close();
19             }
View Code

 

1)删除成功时:

此时,返回值为-1;

2)删除失败时

 此时,会抛异常;

 综上:

1)返回值为受影响行数的情况:insert/update/delete

2)返回值为-1的情况:create/drop table

此结论仅供参考,如有错误,请大神指出请。

若有问题,联系qq:445016465修改;

posted @ 2018-11-22 16:57  UrusCoupe  阅读(406)  评论(0)    收藏  举报