在C#中使用“使用”的正确方法 - c#

Improve this question

我有以下两组代码。我的问题是我们是否还需要将“ using”用于命令和适配器,还是仅用于连接?什么是正确的方法?

 using (OracleConnection conn = new OracleConnection(ConnectionString))
    {
        conn.Open();
        OracleCommand command = new OracleCommand(ProcedureName)
        {
            CommandType = CommandType.StoredProcedure,
            Connection = conn
        };
        command.Parameters.Add(new OracleParameter("P_ID", OracleDbType.Varchar2, Id, ParameterDirection.Input));
        command.Parameters.Add(new OracleParameter("CUR_OUT", OracleDbType.RefCursor, ParameterDirection.Output));

        OracleDataAdapter adapter = new OracleDataAdapter(command);
        adapter.Fill(dt);
    }

上面的代码只有一个using,但是下面的代码只有3个using语句

 using (OracleConnection conn = new OracleConnection(ConnectionString))
    {
        await conn.OpenAsync();
        using (OracleCommand oCommand = new OracleCommand(ProcedureName))
        {
            oCommand.BindByName = true;
            oCommand.CommandType = CommandType.StoredProcedure;
            oCommand.CommandTimeout = await GetCommandTimeout(DatabaseConstants.OracleCommandTimeoutInSeconds);
            oCommand.Connection = conn;

            oCommand.Parameters.Add(new OracleParameter("P_ID", OracleDbType.Varchar2, Id, ParameterDirection.Input));
            oCommand.Parameters.Add(new OracleParameter("CUR_OUT", OracleDbType.RefCursor, ParameterDirection.Output));
            using (OracleDataAdapter oDatAdapter = new OracleDataAdapter(oCommand))
            {
                oDatAdapter.Fill(dataSet);
            }
        }
    }

参考方案

您同时需要它们-连接和注释。任何实现IDisposable的东西都应该丢弃。

创建命令之前,您无需打开连接。这意味着您可以跳过一组{}

using (for connection)
using (for command)
{
processing
}

这是更好,更容易格式化的方法。

我实际上会在开始时检查是否还要为适配器使用它。

另请注意,在CURRENT C#(撰写本文时为8.0)中,您可以将using用于变量声明

using var conn = new OracleConnection()

没有()。变量位于末尾。这意味着更少的格式化。这称为“使用减法”-https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/using

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

Json到php,json_decode返回NULL - php

我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…

将ajax的值存储到javascript变量中 - javascript

我有一个php文件,其中我从服务器获取数据。该php文件的输出是一个包含json格式数据的变量。PHP文件:<?php $dbHostName = "localhost"; $dbUserName = "venseld"; $dbUserPass = "wecuuu"; $dbName = &…