首页 新闻 会员 周边 捐助

这段数据库访问的代码会出现什么样的问题,不考虑初始化问题

0
悬赏园豆:40 [已解决问题] 解决于 2012-09-10 23:00
 static string _DataConnection = ConfigurationManager.AppSettings["DataConnection"];
        SqlConnection _conn = null;
        private SqlConnection GetDbConnection()
        {
            if (_conn == null)
                return new SqlConnection(_DataConnection);
            else
                return _conn;
        }

如果在多个方法同时使用同一连接时,会出现什么问题?

az235的主页 az235 | 大侠五级 | 园豆:8483
提问于:2012-08-29 17:50
< >
分享
最佳答案
0

如果你每次调用的时候是这么写:

SqlConnection myConn= MyClass.GetDbConnection();

然后在下面的访问使用myConn对象,我不觉得会有什么问题
收获园豆:10
八戒的师傅 | 小虾三级 |园豆:1472 | 2012-08-30 00:27
其他回答(3)
0

线程不安全

收获园豆:10
Jeremy Liu | 园豆:705 (小虾三级) | 2012-08-29 18:31

怎么个不安全法,可否说下你的理由

支持(0) 反对(0) az235 | 园豆:8483 (大侠五级) | 2012-08-30 07:56
0

这个还真不知道,不过和这里http://www.cnblogs.com/hongten/archive/2011/07/22/2113442.html的很相似。

如果你知道了,就请分享一下吧

希望大家多多交流:hongtenzone@foxmail.com

收获园豆:10
Hongten | 园豆:1768 (小虾三级) | 2012-08-29 18:40
0

没什么问题.你的_conn不是静态的.要看你是用同一个对象来调用还是每次实例一个对象调用了

收获园豆:10
56180825 | 园豆:1749 (小虾三级) | 2012-08-30 08:15

每次都是用同一个类来调用,

    public class ErrorLogDAL : BaseDAL<ErrorLog>, IErrorLog
    {
        public int Add(ErrorLog t)
        {
            _dic.Clear();
            _sql = "insert into ErrorLog values(@LogDate,@ErrorID,@Comment,@StackTrace)";
            _dic.Add("@LogDate", t.LogDate);
            _dic.Add("@ErrorID", t.ErrorID);
            _dic.Add("@Comment", t.Comment);
            _dic.Add("@StackTrace", t.StackTrace);
            return _dbHelper.ExecuteNonQuery(_sql, _dic);
        }
支持(0) 反对(0) az235 | 园豆:8483 (大侠五级) | 2012-08-30 08:19

@az235: 

那并发有问题,WEB程序一般都是每次事例化对象调用,当然你可以用个集合缓存.WIN的话应该问题不大

支持(0) 反对(0) 56180825 | 园豆:1749 (小虾三级) | 2012-08-30 08:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册