正确的方法将在异常情况下的数据库连接将在、数据库连接、情况下、异常

2023-09-03 00:25:35 作者:烟味少女

执行以下操作code离开连接打开,如果有异常?

我使用的是Microsoft SQL Compact Edition数据库。

 尝试
{
    康涅狄格州的SqlCeConnection =新的SqlCeConnection(的ConnectionString);

    conn.Open();

    使用(SqlCeCommand CMD =
        新SqlCeCommand(选择的东西从SomeTable,康涅狄格州))
    {
      //做一些东西
    }

    conn.Close();
}
赶上(例外前)
{
    ExceptionManager.HandleException(前);
}
 

当然,更好的办法是在尝试之前声明一个连接对象,建立try块内的连接,并关闭在finally块?

 的SqlCeConnection康恩= NULL;
 尝试
 {
    康恩=新的SqlCeConnection(的ConnectionString);

    conn.Open();

    使用(SqlCeCommand CMD =
        新SqlCeCommand(选择的东西从SomeTable,康涅狄格州))
    {
      //做一些东西
    }
}
赶上(例外前)
{
    ExceptionManager.HandleException(前);
}
最后
{
    如果(conn将!= NULL)conn.Close();
}
 

解决方案 教你如何无代码整合连接多个不同类型数据库

您正在处理 SqlCeCommand 在code用的帮助的方式使用块,可以为做同样的的SqlCeConnection

 的SqlCeConnection康恩;
使用(康恩=新的SqlCeConnection(的ConnectionString))
{
   conn.Open();
   使用(SqlCeCommand CMD =
       新SqlCeCommand(选择的东西从SomeTable,康涅狄格州))
   {
   //做一些东西
   }
}
 

请注意:您可以使用使用块实现的IDisposable

编辑:这是一样的。

 尝试
{
    康恩=新的SqlCeConnection(的ConnectionString);
    conn.Open();

    SqlCeCommand CMD = conn.CreateCommand();
    cmd.CommandText =...;

    cmd.ExecuteNonQuery();
}
最后
{
    conn.Close();
}
 

REF:http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection%28VS.80%29.aspx

Does the following code leave the connection open if there is an exception?

I am using a Microsoft SQL compact edition database.

try
{
    SqlCeConnection conn = new SqlCeConnection(ConnectionString);

    conn.Open();

    using (SqlCeCommand cmd =
        new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
    {
      // do some stuff
    }

    conn.Close();
}
catch (Exception ex)
{
    ExceptionManager.HandleException(ex);
}

Surely a better way would be to declare a connection object before the try, establish a connection inside the try block and close it in a finally block?

 SqlCeConnection conn = null;
 try
 {
    conn = new SqlCeConnection(ConnectionString);

    conn.Open();

    using (SqlCeCommand cmd =
        new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
    {
      // do some stuff
    }
}
catch (Exception ex)
{
    ExceptionManager.HandleException(ex);
}
finally
{
    if( conn != null )  conn.Close();
}

解决方案

The way you are handling SqlCeCommand in your code with the help of a using block, you could do the same for the SqlCeConnection.

SqlCeConnection conn;
using (conn = new SqlCeConnection(ConnectionString))
{
   conn.Open();
   using (SqlCeCommand cmd = 
       new SqlCeCommand("SELECT stuff FROM SomeTable", conn))
   {
   // do some stuff
   }
}

Note: You can use a using block for classes that implement IDisposable.

EDIT: This is same as

try
{
    conn = new SqlCeConnection(ConnectionString);
    conn.Open();

    SqlCeCommand cmd = conn.CreateCommand();
    cmd.CommandText = "...";

    cmd.ExecuteNonQuery();
}
finally
{
    conn.Close();
}

ref: http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlceconnection%28VS.80%29.aspx

 
精彩推荐
图片推荐