架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10719|回复: 0

[资料] 如何正确使用SqlConnection,SqlConnection线程安全吗?

[复制链接]
发表于 2016-11-19 08:46:14 | 显示全部楼层 |阅读模式
文章链接如下:

http://www.cnblogs.com/LoveJenny/archive/2011/10/31/2229738.html

1:SqlConnection是不是线程安全的呢?

可以知道在多线程环境下使用一个Connection来执行Sql语句是不安全的。

SqlConnection不是线程安全的,所以多线程必然会出现问题。
其实.net是自动提供连接池管理的,只要连接字符串一样(必须是一模一样),就会在同一个池里面,open和close实际上都是从池中取一个连接和将连接放回池中,不会引起性能问题。所以每次打开连接后,在使用完毕之后,应该尽早的close,以便将连接归还池中供其它程序使用。



2:为什么还是有人使用上面的那种写法来创建Connection呢?

我认为他们可能会认为创建多个Connection比较耗时,而且多个Connection会占用内存,影响性能等等。。


3:每次new SqlConnection是不是很占用内存和资源,影响性能?

这个就是瞎认为,瞎操心.

因为"创建多个Connection"并不一定就会创建新的多个数据库连接,数据库连接是宝贵资源,就MS SQL Server而言,其内部会对这个宝贵资源进行优化,连接是会被重用的.

连接池是.net来提供的,在连接字符串中有一个Pooling属性,默认是true,也就是默认开启连接池,这个和sql server没关系,如果你连接字符串里面写Pooling=false,那么就没有连接池了,这个完全是.NET的优化。



《探索多线程使用同一个数据库connection的后果》
文章链接:http://www.th7.cn/Program/java/201503/415005.shtml

总结:在多线程的环境中,在不对connection做线程安全处理的情况下,使用单个connection会引起事务的混乱....影响jdbc事务的使用。。。




上一篇:javascrip{过滤}t:history.go()和History.back()的区别
下一篇:C# 连接SQL数据库 常用连接字符串
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-23 14:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表