如何禁用连接池?

Pab*_*blo 5 c# oracle odp.net

我的应用程序用于连接到DB的连接字符串如下:

    private const string oradb = "Data Source=(DESCRIPTION=(ADDRESS_LIST="
                    + "(ADDRESS=(PROTOCOL=TCP)(HOST=host.name)(PORT=1521)))"
                    + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=service.name)));"
                    + "User Id=myusername;Password=mypass;";
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的所有数据库访问点中,我使用以下模式:

        OracleConnection conn = new OracleConnection(oradb);

        try
        {
            Console.WriteLine("Opening DB Connection...");
            conn.Open();

            string queryString = string.Format(@"SELECT ...");

            using (OracleCommand command = new OracleCommand(queryString, conn))
            {
                using (OracleDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                     ...
                    }
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception occured during DB access: {0}", e.Message);
            dbr.Error = e.Message;
        }
        finally
        {
            Console.WriteLine("Closing DB connection");
            conn.Close();
            conn.Dispose();
        }
Run Code Online (Sandbox Code Playgroud)

我确实正确处理异常并在try/catch/finally关闭和处理连接对象.但是,我经常收到oracle服务消息,我正在举行oracle会话.此外,如果我只是让我的应用程序打开,第二天尝试进行操作,我ora-12537 network session end of file第一次得到例外,然后第二次尝试正在进行.经过一些阅读后,看起来我必须禁用连接池.如果这是正确的解决方法,如何禁用池?如果没有,那么还有什么可能是错的?

chr*_*dev 11

您可以添加Pooling=False连接字符串,但这意味着每次都会创建一个新连接.

+ "User Id=myusername;Password=mypass;Pooling=False;";
Run Code Online (Sandbox Code Playgroud)

看一下这篇文章,它可能会对您的问题有所帮助.另外,请查看此网站页面,特别是" 使用连接池"部分