c# - 数据库连接 : How to use c# 4. 0

标签 c# c#-4.0 data-access-layer

初学者:

大家好 - 正在寻找一些帮助来了解我应该如何打开和关闭数据库连接。

我试图解决的问题: 我有一组存储过程需要在数据访问层执行。

我的服务调用 DA 方法 Get(Request req) 如下:

public Data Get(Request request)
    {
        var data = new Data();

        data = GetData();
        data.AppleData = GetGrapeData();
        data.OrangeData = GetGrapeData();
        data.GrapeData = GetGrapeData();

        return data;
    }

其中所有 getmethods getdata、getgrapedata 等都是数据访问类中的私有(private)方法,并且在每个方法中调用不同的 SP。

现在,在每种方法中,我打开和关闭数据库连接如下:

{  try{   
  using (var connection = new SqlConnection(connectionString)
  using (var command = connection.CreateCommand())
   {
      connection.open();
      ExecuteSP();
      connection.Close();
   }
   }catch()
     {
     }
}
现在 有什么办法可以做到这一点,这样我就必须打开/关闭连接一次? 我正在每个私有(private)方法中 try catch 。这可以吗? 我上面的做法有什么问题吗?

最佳答案

是的,您只能打开一次连接。您可以使用类或其他东西来管理它,但对于我来说,对于一个简单的场景来说,这似乎有点过分了。

public Data Get(Request request)
{
    using (var connection = new SqlConnection(connectionString))
    {
        try
        {
            connection.open();

            var data = new Data();

            data = GetData(connection);
            data.AppleData = GetGrapeData(connection);
            data.OrangeData = GetGrapeData(connection);
            data.GrapeData = GetGrapeData(connection);

            return data;
        }
        finally
        {
            connection.close()
        }

    }
}

然后在调用存储过程的方法中:

private Date GetDate(SqlConnection connection)
{
    using (var command = connection.CreateCommand())
    {
        return ExecuteSP();
    }
}

您可以将异常处理放在任何您想要的地方,但是如果您不打算对异常执行任何操作,那么您绝对不应该捕获它。

关于c# - 数据库连接 : How to use c# 4. 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869212/

相关文章:

C# 如何在继承自 DynamicObject 的类上序列化(JSON、XML)普通属性

excel - Excel 互操作中工作表和工作表之间的区别

c# - 使用 iTextSharp 自动缩放图像

ASP.Net 分层应用程序 - 在层之间共享实体数据模型

c# - 如何访问 winforms 设计器中的继承控件

C# SQL 服务器连接

c# - 设计面向对象的数据库调用而不是基于字符串

c# - 谁应该创建业务对象?

c# - 在 C# 中通过 SSH.NET 隧道连接到 MySQL 数据库时出现 "Unable to connect to any of the specified MySQL hosts"

sql-server - 我可以使用什么来代替 Include?