mohammad_2039
سه شنبه 04 اسفند 1388, 17:51 عصر
دوستان من یه کلاس برای مدیریت کانکشن نوشتم و از singleton pattern در اون استفاده کردم. یعنی کلاسی که فقط یه نمونه ازش ساخته میشه و اگه دوباره new بشه همون اولی به کار بر نشون میده. یهنی هر وقت تو برنامه کانکشن خواستیم یه بار این کلاس رو صدا میزنیم. اما نمیدونم ایرادش کجاست که کار نمیکنه ؟؟
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
namespace CnnManager
{
public class CnnManager
{
private SqlConnection mn;
private static CnnManager instance;
private int index;
private CnnManager()
{
AppSettingsReader r =new AppSettingsReader();
mn = new SqlConnection(r.GetValue("Data Source=(local);Initial Catalog=name;Integrated Security=True", typeof(string)).ToString());
}
public static CnnManager Instance
{
get
{ if( instance == null)
instance=new CnnManager();
return instance;
}
}
public SqlConnection GetConection()
{
if (index == 0)
mn.Open();
index++;
return mn;
}
public void FreeCoection()
{
index-- ;
if (index == 0)
mn.Close();
}
}
}
اینجا هم مثلا تو فرم میخوام صدا بزنم.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace CnnManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection cn = CnnManager.Instance.GetConection();
nameDataSet ds = new nameDataSet();
SqlDataAdapter da = new SqlDataAdapter("select * from tbl_name",cn);
da.Fill(ds, "tbl_name");
comboBox1.DataSource = ds;
comboBox1.DisplayMember = "tbl_name.os_name";
comboBox1.ValueMember = "tbl_name.os_id";
CnnManager.Instance.FreeCoection();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
namespace CnnManager
{
public class CnnManager
{
private SqlConnection mn;
private static CnnManager instance;
private int index;
private CnnManager()
{
AppSettingsReader r =new AppSettingsReader();
mn = new SqlConnection(r.GetValue("Data Source=(local);Initial Catalog=name;Integrated Security=True", typeof(string)).ToString());
}
public static CnnManager Instance
{
get
{ if( instance == null)
instance=new CnnManager();
return instance;
}
}
public SqlConnection GetConection()
{
if (index == 0)
mn.Open();
index++;
return mn;
}
public void FreeCoection()
{
index-- ;
if (index == 0)
mn.Close();
}
}
}
اینجا هم مثلا تو فرم میخوام صدا بزنم.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace CnnManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection cn = CnnManager.Instance.GetConection();
nameDataSet ds = new nameDataSet();
SqlDataAdapter da = new SqlDataAdapter("select * from tbl_name",cn);
da.Fill(ds, "tbl_name");
comboBox1.DataSource = ds;
comboBox1.DisplayMember = "tbl_name.os_name";
comboBox1.ValueMember = "tbl_name.os_id";
CnnManager.Instance.FreeCoection();
}
}
}