C#中的SqlConnection资源访问细节

public void run1()
  {
            string CONNECTION_STRING = "Database=hibernate;Data Source=localhost;User Id=root;Password=1723;pooling=true;CharSet=utf8;port=3306";
            MySqlConnection connection = new MySqlConnection(CONNECTION_STRING);//1/这里只是在单纯的创建对象,无限创建
 }

public void run2()
  {
            string CONNECTION_STRING = "Database=hibernate;Data Source=localhost;User Id=root;Password=1723;pooling=true;CharSet=utf8;port=3306";
            MySqlConnection connection = new MySqlConnection(CONNECTION_STRING);//1/这里只是在单纯的创建对象,无限创建
            connection.Open();//2/打开数据库链接,根据数据库配置
 }

public void run3()
  {
            string CONNECTION_STRING = "Database=hibernate;Data Source=localhost;User Id=root;Password=1723;pooling=true;CharSet=utf8;port=3306";
            //MySqlConnection connection = new MySqlConnection(CONNECTION_STRING);//1/这里只是在单纯的创建对象,无限创建
            //connection.Open();//2/打开数据库链接,根据数据库配置的连接数
            /**
             * 因为MySqlConnection实现了IDisposable,所以用using包裹起来之后,出了using区域,会自动释放链接资源
             * 不需要像java中 try catch finall 语句块了
             *
             * 这种方式没有链接的限制,不考内存分类和效率的情况下,感觉和直接创建对象差不多!
             *
             * 链接字符串中有个连接池配置pooling=true,true代表打开连接池,
             * 在打开链接池的情况下,第一次open会用很长时间,接下来open就基本山不需要时间了!
             * 据说连接池物理连接大概10分钟没人访问就关闭了,所以只分钟之后再访问需要和第一次访问一样耗时
             *
             */
            using (MySqlConnection connection = new MySqlConnection(CONNECTION_STRING))
            {
                connection.Open();
            }
  }

static void Main(string[] args)
 {
            Program pro = new Program();
            for (int i = 0; i < 100000; i++)
            {
                pro.run1();//无限运行
                pro.run2();//100次就挂了
                pro.run3();//无限运行
                Console.WriteLine(i);
            }   
}


知识共享许可协议
《C#中的SqlConnection资源访问细节》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     200.82ms