如果使用了连接池,当close,dispose时候,并不真正的关闭连接,而是将连接对象放入连接池中,下次再新建时候,其实没有新建,只是从连接池中拿出来,而如果不启用连接池,close,dispose则是真正的关闭连接,再重新建立则耗费更多的时间,如果不close,直接new的话则是真正的重新建立对象,因为不close,表示当前连接对象还在用
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace t2_ConnectionPool
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//显示加上连接池的运行时间,默认会加连接池
private void button1_Click(object sender, EventArgs e)
{
Stopwatch watch=new Stopwatch();
watch.Start();
for (int i = 0; i < 100; i++)
{
SqlConnection conn = new SqlConnection("server=.;database=dbtest;uid=sa;pwd=123");
conn.Open();
conn.Close();
conn.Dispose();
}
watch.Stop();
label1.Text = watch.ElapsedMilliseconds.ToString();
}
//显示不加连接池的运行时间
private void button2_Click(object sender, EventArgs e)
{
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 0; i < 100; i++)
{
SqlConnection conn = new SqlConnection("server=.;database=dbtest;uid=sa;pwd=123;pooling=false");
conn.Open();
conn.Close();
conn.Dispose();
}
watch.Stop();
label2.Text = watch.ElapsedMilliseconds.ToString();
}
}
}