• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 解析为何要关闭数据库连接,可不可以不关闭的问题详解

解析为何要关闭数据库连接,可不可以不关闭的问题详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了数据库范式详解,传奇怪物数据库详解,传奇数据库详解,罗斯文数据库详解,传奇物品数据库详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

首先要说明的是连接数是有限制的:

代码如下:

    conn.Open();
    Console.WriteLine("打开了{0}个连接", i);
}
</div>
运行结果如下:

image

过一会就会提示打开连接超时了:

clip_image002

 

可以看到数据库连接时有限制的,如果连接不关闭,而且使用的人比较多,那么系统很快就down掉了。

 

但是有时候由于某些原因应用程序可能只是几个人使用,所以就有人设计了:

在应用程序启动的时候打开数据库连接,在应用程序关闭的时候关闭数据库连接

那么使用这种方式有什么问题呢?

首先假设有一张表Nums,表定义如下:

image

Main代码如下:

ExecuteCommand代码如下:

    Thread.Sleep(100);

    SqlCommand cmd = new SqlCommand(
       string.Format("Insert into Nums values('{0}') ", id), conn);

    cmd.ExecuteNonQuery();
}
</div>
运行:

clip_image002[5]

可以看到ExecuteNonQuery方法抛出了异常,原因是连接处于关闭状态。

 

可是我们的连接一直都是open着的啊,并没有调用close,dispose之类的方法啊。

于是在ExecuteCommand前面增加判断条件:

if (conn.State != System.Data.ConnectionState.Open)
    conn.Open();再次运行:

clip_image002[7]

可以看到还是会出现连接已关闭的问题。你知道什么原因吗?

这里是由于多线程环境引起的。所以需要加锁。

修改Parallel.For的最大值上限,要测试下是否可以长期执行了。

结论:对于某些只有几个人使用的应用程序,可以不关闭数据库连接,但是在写代码的时候最好要加上连接是否打开的判断。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解析为何要关闭数据库连接,可不可以不关闭的问题详解

相关文章

  • 2017-05-28详解C++程序中定义struct结构体的方法
  • 2017-05-28浅谈int8_t int64_t size_t ssize_t的相关问题(详解)
  • 2017-05-28数据结构课程设计-用栈实现表达式求值的方法详解
  • 2017-05-28ShellExecute函数用法的实例代码
  • 2017-05-28用C++面向对象的方式动态加载so的方法
  • 2017-05-28基于errno返回值的对应错误码的详细介绍
  • 2017-05-28C语言安全编码之数值中的sizeof操作符
  • 2017-05-28快速解决boost库链接出错的问题(分享)
  • 2017-05-28DSP中浮点转定点运算--浮点与定点概述
  • 2017-05-28c语言中字符串分割函数及实现方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++入门之基础语法学习教程
    • C++中Socket网络编程实例详解
    • C语言以数据块的形式读写文件实例代码
    • MFC程序设计常用技巧汇总
    • C语言静态链表和动态链表
    • C++基于对话框的程序的框架实例
    • 简介C/C++预处理器的一些工作
    • C和指针小结(推荐)
    • C++实现String类实例代码
    • 浅谈C++指针(必看)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有