我之所以这样问,是因为当我在我的SqlCommandBuilder中使用GetUpdateCommand()或GetInsertCommand()时,生成的SqlCommand具有其连接成员集,但处于关闭状态。我想知道它使用的是什么连接,因为我在这个对象中看不到任何连接成员,而SqlCommandBuilder.DataAdapter.SelectCommand中的连接是打开的(更新/删除/插入命令属性为空)。
在运行GetUpdateCommand()或GetInsertCommand()之前,我应该在哪里检查连接的状态?或者,如果他们的内部连接关闭了,我应该直接打开它吗?
顺便说一句,我在SQL Server2008上使用.Net 4。
发布于 2011-01-11 00:04:19
AFAIK它正在使用SqlCommandBuilder.DataAdapter.SelectCommand的连接来创建新命令,但是只有在您第一次尝试访问该命令时才会执行此操作。在第一次尝试之后,命令实例将被保留,并且仅重新生成其命令文本。
发布于 2011-01-10 23:52:39
在SqlCommandBuilder上调用GetXXXCommand时,它将在DataAdapter (DataAdapter.SelectCommand.Connection.CreateCommand())上的连接集上内部创建一个新命令。这意味着对于构建器创建的所有命令,连接应该是相同的,打开/关闭状态也应该是相同的。
你的代码是什么样子的,决定了状态在SqlCommandBuilder.DataAdapter.SelectCommand.Connection上是打开的,而不是在SqlCommandBuilder.GetInsertCommand().Connection上!
https://stackoverflow.com/questions/4648515
复制相似问题