我要在很多地方用到一个相同的数据库连接
是不是可以做一个静态的Connection,所有方法共享一个连接
这样是不是存在一个并发的问题部分讨论内容见
http://community.csdn.net/Expert/topic/4869/4869905.xml?temp=8.684939E-02
是不是可以做一个静态的Connection,所有方法共享一个连接
这样是不是存在一个并发的问题部分讨论内容见
http://community.csdn.net/Expert/topic/4869/4869905.xml?temp=8.684939E-02
线程安全
此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。对于什么是线程安全,MSDN应该有具体的介绍.
连接文章最后测试也不正确,在单线程下是没问题,在多线程下存在锁的问题;锁降低访问效率.
有一百个人排队买票,你说一个售票窗口快还是多个票窗口快.
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;
}
那大哥们帮看一下
上一段代码的错误处理该咋改哟
Connection.Close()后还能reader.Read()?
先保证代码运行没问题的情况,再去考虑重构.
没有必要太在代码写得不好,关键是自己愿意去重构.