Connection 共享

CuiQing0 2006-07-10 12:29:18
我要在很多地方用到一个相同的数据库连接
是不是可以做一个静态的Connection,所有方法共享一个连接
这样是不是存在一个并发的问题

部分讨论内容见
http://community.csdn.net/Expert/topic/4869/4869905.xml?temp=8.684939E-02
...全文
169 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CuiQing0 2006-07-10
  • 打赏
  • 举报
回复
嗯,有道理
MonkWang 2006-07-10
  • 打赏
  • 举报
回复
完全同意!
henryfan1 2006-07-10
  • 打赏
  • 举报
回复
OleDbConnection 类
线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。

对于什么是线程安全,MSDN应该有具体的介绍.
连接文章最后测试也不正确,在单线程下是没问题,在多线程下存在锁的问题;锁降低访问效率.
有一百个人排队买票,你说一个售票窗口快还是多个票窗口快.
www_123du_com 2006-07-10
  • 打赏
  • 举报
回复
肯定会有并发问题

你只能在一个线程里面共享(其实不应该叫共享)conection对象

ASP.NET的一个线程就是一个WebForm页面,所以你只应该写成Page类的成员变量,不应该写成静态变量。
孟子E章 2006-07-10
  • 打赏
  • 举报
回复
连接字符串可以共享,连接对象每次用的时候打开,用完关闭
nmgwolf 2006-07-10
  • 打赏
  • 举报
回复
我觉得并发问题肯定会出现!支持henryfan1(http://henryfan.cnblogs.com) ( ) 信誉:69的意见!
zcyan666 2006-07-10
  • 打赏
  • 举报
回复
关注
henryfan1 2006-07-10
  • 打赏
  • 举报
回复
楼主的代码能运行正常?
Connection.Close()后还能reader.Read()?
先保证代码运行没问题的情况,再去考虑重构.
没有必要太在代码写得不好,关键是自己愿意去重构.
CuiQing0 2006-07-10
  • 打赏
  • 举报
回复

public static TEMP GetByID(System.Int32 fa)
{
OleDbCommand cmd = new OleDbCommand("SELECT * FROM [TEMP] WHERE [a] = @ID", Application.ConnectionString);
OleDbParameter parID = cmd.Parameters.Add("@ID", OleDbType.Integer);
parID.Value = fa;
OleDbDataReader reader = null;
try
{
reader = cmd.ExecuteReader(CommandBehavior.SingleRow);
cmd.Connection.Close();
}
catch (Exception ex)
{
cmd.Connection.Close();
cmd.Dispose();
throw ex;
}
if (!reader.HasRows)
{
cmd.Dispose();
return null;
}
else
{
reader.Read();
}
TEMP tEMP = CreateByRow(reader);
reader.Close();
reader.Dispose();
cmd.Dispose();
return tEMP;
}


那大哥们帮看一下
上一段代码的错误处理该咋改哟

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧