大体情况是这样我想把这个connection 连接写成静态的,所有的请求都用这个连接,
在项目启动的时候调用 t方法,给静态的con赋值,
public static SqlConnection con = null; public static void t()
{
con = new SqlConnection("server = .; database = dongyang;pooling = false;trusted_connection = true");
con.Open();
}然后其它的请求都直接用这个con,我自己用多线程测试有时候出错有时候不错误,有时候好像还执行到一半就卡在那里,
不知道这样写静态的con可不可以,请大家指点下!我的目的是想不用每个请求都去重新连接下数据。
但是网上说的ado.net数据库连接池 我有个疑惑的地方,每个求情过来的时候我都写的是new一个connection对象,这样是不是就没有连接池的效果了,还是象网上说的那样虽然是new但是只要连接字符才一样就会去 连接池里面去空闲的?
在项目启动的时候调用 t方法,给静态的con赋值,
public static SqlConnection con = null; public static void t()
{
con = new SqlConnection("server = .; database = dongyang;pooling = false;trusted_connection = true");
con.Open();
}然后其它的请求都直接用这个con,我自己用多线程测试有时候出错有时候不错误,有时候好像还执行到一半就卡在那里,
不知道这样写静态的con可不可以,请大家指点下!我的目的是想不用每个请求都去重新连接下数据。
但是网上说的ado.net数据库连接池 我有个疑惑的地方,每个求情过来的时候我都写的是new一个connection对象,这样是不是就没有连接池的效果了,还是象网上说的那样虽然是new但是只要连接字符才一样就会去 连接池里面去空闲的?
为了保证连接池里有足够多的空闲连接,应该在执行sql后立即关闭connection
你可以用连接access数据试试..进行几十次new connection..
用静态Connection的优点:
可以复用Command,特别是在使用了Command的Prepare方法的情况下,会提高一点效率。
Connection保持打开,应该可以节省一点打开关闭的开销(个人猜测)。
使用事务比较简单,因为只有一个Connection。
缺点是:
必须做好同步,并且在同步操作中尽量只进行数据库操作。这个是最大的缺点,而且想要做好很难,一旦没做好会大大影响效率。