PDA

View Full Version : سوال: مشکل در نوشتن کلاسی که کانکشن رو مدیریت کنه.



mohammad_2039
سه شنبه 04 اسفند 1388, 16: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();


}
}
}

mohammad_2039
چهارشنبه 05 اسفند 1388, 09:04 صبح
از دوستان کسی نمیتونه کمک کنه :ناراحت::افسرده::متفکر:

SMRAH1
چهارشنبه 05 اسفند 1388, 11:13 صبح
سلام
یعنی چی که کار نمیکنه! دقیقا ایرادش کجا است (اگر خطا میده کدوم خط،کار خواستی که باید انجام بده که نمیده،چیه و ....)؟
موفق باشید

mohammad_2039
چهارشنبه 05 اسفند 1388, 12:25 عصر
به Conection String گیر میده . وقتی یه نمونه ازش صدا میزنی کانکشن باز نمیشه که بخوای کارای دیگه انجام بدی. اگه ازش استفاده کنی بهتر متوجه میشی . با تشکر

SMRAH1
چهارشنبه 05 اسفند 1388, 13:24 عصر
سلام
احتمالا مشکل توی خط :

r.GetValue("Data Source=(local);Initial Catalog=name;Integrated Security=True", typeof(string)).ToString()
وجود داره.آیا شما کلیدی به نام:
Data Source=(local);Initial Catalog=name;Integrated Security=True
دارید!احتمالش خیلی کمه.کلید ها معمولا اسمی ساده مثل YourConnectionString یا ... دارن نه اسمی به این طولانی بودن و کاراکتر های غیر معقول!برای این که نام دقیق رو ببینی،یه سری به app.config در پوشه پروژه بزن.
در صمن آیا مطمئنی که Connection String بالا برای اتصال کفایت میکنه!
موفق باشی

mohammad_2039
شنبه 08 اسفند 1388, 07:55 صبح
بله این کانکشن استرینگ برای اتصال به بانک کامل و کافی هستش و تو اتصال معمولی من ازش استفاده میکنم و جواب میده ، اینجا جواب نمیده ؟

SMRAH1
شنبه 08 اسفند 1388, 10:25 صبح
سلام
پس به احتمال قوی مشکل همون نام است.فایل app.config رو لطفا بگذار تا بشه توضیح داد.
موفق باشی