是否将为SQLCommand提供新的SQLConnection调用在新的SQL Connection上处置?

因巴克1234

前言

我了解通常大多数SQL调用都是这样运行的

using(var cnn = new DbConnection("YOURCONNECTIONSTRINGHERE") 
{
  cnn.Open(); //Open the connection.
  using(var cmd = new DbCommand("YourSQL", cnn)
  {
    cmd.ExecuteScalar; //Or whatever type of execution you want.
  }
}

这样可以正确处理连接和命令。

我的问题:这段代码可以正确处理两个对象吗?

  using(var cmd = new SqlCommand("YourSQL", new Connection("YOURCONNECTIONSTRINGHERE"))
  {
    cmd.ExecuteScalar; //Or whatever type of execution you want.
  }

实际上,我使用的是一种提供并打开连接的方法。

public SqlConnection Connection()
{
    var product = new SQLConnection("ConnectionString");
    product.Open();
    return product;
}

因此,通话结束时如下所示:

  using(var cmd = new SqlCommand("YourSQL", Connection())
  {
    cmd.ExecuteScalar; //Or whatever type of execution you want.
  }

我知道将销毁SqlCommand对象,但是会销毁在using参数声明中创建的SQLConnection吗?我已经尝试运行一些简单的单元测试,但是似乎没有定论。

霍曼巴林

此代码是否可以正确处理这两个对象?

using(var cmd = new SqlCommand("YourSQL", new Connection("YOURCONNECTIONSTRINGHERE"))
{
    cmd.ExecuteScalar; //Or whatever type of execution you want.   
}

上面的代码未Dispose()连接调用using块确保cmd.Dispose()在执行该块后立即调用该方法,但连接保持打开状态。由于该连接没有引用它的对象,因此连接最终将由垃圾收集器关闭/处置。

如果要立即处理命令连接,请尝试:

using (var con = Connection()) // <-- GetConnection() would be a better name
using (var cmd = new SqlCommand(con)
{
    cmd.ExecuteScalar; 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SqlCommand-SqlConnection使用处置问题

来自分类Dev

将处置一个在其方法上启动了线程的对象时,无需调用Thread.Abort()

来自分类Dev

是否处置了JFrame?

来自分类Dev

处置HttpConfiguration是否安全?

来自分类Dev

关闭记录集后,是否需要处置SqlCommand?

来自分类Dev

如何多次创建新的和处置jcomponents?

来自分类Dev

是否应该处置UdpClient?

来自分类Dev

处置对象是否处置所有IDisposable属性?

来自分类Dev

HttpWebResponse上的奇怪对象处置异常

来自分类Dev

是否有比调用onClickListener更好的方法来启动按钮单击上的新活动?

来自分类Dev

在新的错误分配错误上,是否还需要调用delete?

来自分类Dev

处置后使用了提供程序-Multiprovider

来自分类Dev

是否可以在其他Connection上执行CallableStament?

来自分类Dev

在FreeBSD 10.1上添加新的系统调用

来自分类Dev

新场景上的Unity调用方法

来自分类Dev

尝试/最后阻止vs调用处置?

来自分类Dev

尝试/最后阻止vs调用处置?

来自分类Dev

新的SqliteConnection(“ Filename =:memory:”); 在connection.Open()上给出System.NullReferenceException;

来自分类Dev

NUnit是否处置实现IDisposable的对象?

来自分类Dev

我是否需要处置肘节实例?

来自分类Dev

订阅处置-是否等待订阅操作结束?

来自分类Dev

在检查是否需要保留旧值或插入新值的同时在postgres SQL上更新查询?

来自分类Dev

新分支上的Git rebase master提供合并冲突

来自分类Dev

调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

来自分类Dev

调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

来自分类Dev

自定义角色提供程序-处置DbContext

来自分类Dev

从VB调用C ++ DLL时在“新”上崩溃

来自分类Dev

AngularJS应用运行在Chrome上提供ERR_CONNECTION_REFUSED

来自分类Dev

ImageResizer'使用.Build(新映像作业(源,dest,设置,处置源,添加FileExtension))。最终路径代替'

Related 相关文章

  1. 1

    SqlCommand-SqlConnection使用处置问题

  2. 2

    将处置一个在其方法上启动了线程的对象时,无需调用Thread.Abort()

  3. 3

    是否处置了JFrame?

  4. 4

    处置HttpConfiguration是否安全?

  5. 5

    关闭记录集后,是否需要处置SqlCommand?

  6. 6

    如何多次创建新的和处置jcomponents?

  7. 7

    是否应该处置UdpClient?

  8. 8

    处置对象是否处置所有IDisposable属性?

  9. 9

    HttpWebResponse上的奇怪对象处置异常

  10. 10

    是否有比调用onClickListener更好的方法来启动按钮单击上的新活动?

  11. 11

    在新的错误分配错误上,是否还需要调用delete?

  12. 12

    处置后使用了提供程序-Multiprovider

  13. 13

    是否可以在其他Connection上执行CallableStament?

  14. 14

    在FreeBSD 10.1上添加新的系统调用

  15. 15

    新场景上的Unity调用方法

  16. 16

    尝试/最后阻止vs调用处置?

  17. 17

    尝试/最后阻止vs调用处置?

  18. 18

    新的SqliteConnection(“ Filename =:memory:”); 在connection.Open()上给出System.NullReferenceException;

  19. 19

    NUnit是否处置实现IDisposable的对象?

  20. 20

    我是否需要处置肘节实例?

  21. 21

    订阅处置-是否等待订阅操作结束?

  22. 22

    在检查是否需要保留旧值或插入新值的同时在postgres SQL上更新查询?

  23. 23

    新分支上的Git rebase master提供合并冲突

  24. 24

    调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

  25. 25

    调用subject.OnCompleted()是否会整理/调用处置/不泄漏内存,还是我必须自己在IDisposable上调用处置?

  26. 26

    自定义角色提供程序-处置DbContext

  27. 27

    从VB调用C ++ DLL时在“新”上崩溃

  28. 28

    AngularJS应用运行在Chrome上提供ERR_CONNECTION_REFUSED

  29. 29

    ImageResizer'使用.Build(新映像作业(源,dest,设置,处置源,添加FileExtension))。最终路径代替'

热门标签

归档