在我的程序中,cmd.ExecuteNonQuery() 到底是做什么的?

9
string connection = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=D:\\it101\\LoginForm\\App_Data\\registration.mdb";

string query = "INSERT INTO [registration] ([UserID] , [Name] , [Contact_no] , [City]) values (123, 'abc' ,12345, 'pqr')";

OleDbConnection con = new OleDbConnection(connection);
OleDbCommand cmd = new OleDbCommand();
cmd.CommandText = query;
cmd.CommandType = CommandType.Text;
cmd.Connection = con;

con.Open();
cmd.ExecuteNonQuery();

如果我在程序的结尾没有写cmd.ExecuteNonQuery()会怎样? 如果查询需要执行,为什么要写executeNonquery()而不是executeQuery()?


3
将其视为准备一顿饭 - 那些都是在ExecuteNonQuery()之前的代码行,而实际上执行它就像吃饭一样。如果没有ExecuteNonQuery(),你会浪费这顿饭。 :) - Shadow The Spring Wizard
1
如果我在程序结尾没有写cmd.ExecuteNonQuery()会怎么样呢?试一试 :)。如果查询需要执行,为什么要写executeNonQuery()而不是executeQuery()呢?向微软.NET团队询问 :) 顺便说一句,你不能在几分钟内通过谷歌弄清楚这个方法的作用。 - Soner Gönül
@Shadow Wizard 非常感谢。这是一个很好的解释方式。 :) - Parth
3个回答

23

如果我们想要处理数据库,会发生两件事,即修改和检索。

修改:

在修改部分中,我们有插入、删除、更新等查询。因此,我们需要使用ExecuteNonQuery命令。为什么呢?因为我们不是在查询数据库,而是在修改。

语法:

cmd.ExecuteNonQuery方法

检索:

在此过程中,我们通过使用Select语句来查询数据库。对于这个过程,我们使用ExecuteReader(),ExecuteScalar()。

如果选择查询返回多条记录,我们需要使用ExecuteReader()

如果选择查询返回一条记录,我们需要使用ExecuteScalar()

语法:

cmd.ExecuteReader()方法

cmd.ExecuteScalar()方法

上述语句(ExecuteReader()、ExecuteScalar()、SqlCommand.ExecuteNonQuery()) 用于执行您在SqlCommand中提供的命令语句。如果您不使用它们,您的命令将无法执行。


谢谢。这很易懂和详细。事情变得更清晰了! :) - Parth
1
挑剔一下:ExecuteScalar() 返回第一行的第一列,因此您不能使用它返回整个记录。 - ProgrammingLlama

7

ExecuteNonQuery执行的是不会产生任何结果的查询(例如更新或插入)。

ExecuteQuery执行的是应该产生结果的查询(即SELECT)。

如果您没有在最后编写ExecuteNonQuery,则您的查询将不会被执行。


5

SqlCommand.ExecuteNonQuery方法

执行与连接相关的语句并返回所影响的行数。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。

executeQuery方法

运行给定的 SQL 语句并返回一个单独的 SQLServerResultSet 对象。

如果您想要执行查询,请使用 ExecuteNonQuery 方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接