PDA

View Full Version : تعریف کانکشن در کلاس جدا



sh-eng
شنبه 18 آذر 1391, 12:01 عصر
سلام من توی یه کلاس جدا کانکشن استرینگم رو تعریف کردم این طوری:
public class MyConnection
{
private SqlConnection _Cnn;


public MyConnection()
{
//
// TODO: Add constructor logic here
//
}


public SqlConnection Cnn
{
get
{
try
{


_Cnn = new SqlConnection(@"Data Source=.;Initial Catalog=mngg_net_mngg_db; integrated security=true");



_Cnn.Open();
return _Cnn;
}
catch (Exception ex)
{

return null;

}
}
}


}

الان نمی دونم کانکشنم رو کجا ببندم که مشکل پیش نیاد
یه مشکل دیگه هم هست بعضی وقتا رو هاست این ارور رو میده : Object reference not set to an instance of an object
این ارور رو روی خط cn.open میده

Mohamad1362
شنبه 18 آذر 1391, 13:05 عصر
چرا کلاس جدا براش تعریف کردی؟ میخوای رشته اتصال رو تو این کلاس تعریف کنی واسه کل پروژه ات تغییر کنه ؟ اگه واسه این کار میخوای راهش این نیست ، باید تو Webconfig این کارو بکنی

sh-eng
شنبه 18 آذر 1391, 13:49 عصر
connection string برای هاست توی web config هست ولی تو لوکال اینجوری وصل می شم تو کلاس بالا
اینم طرز استفاده ام ازش تو یه کلاس دیگه ست:
public static void DeleteGalleryCat(int GallaryCatId)
{
SqlCommand cmd2 = new SqlCommand("delete Gallarytbl where GallaryId=@GallaryId ", new MyConnection().Cnn);

cmd2.CommandType = CommandType.Text;

cmd2.Parameters.AddWithValue("@GallaryId", GallaryId);

cmd2.ExecuteNonQuery();
}

bahar_1984_n
شنبه 18 آذر 1391, 15:37 عصر
بله من هم مشکل دارم میشه کسی یه کد بهیه برای تعریف کانکشن بنویسه تا هیچ مشکلی هیچ وقت نداشته باشیم

bahar_1984_n
شنبه 18 آذر 1391, 15:39 عصر
یکی از دوستان اگه میشه لطف کنه کد کانکشن رو در برنامه سه لایه بنویسه .احساس میکنم کدام اصلا بهینه نیست

hamid.karimy
شنبه 18 آذر 1391, 16:20 عصر
ببینید دوستان،نوشتن کانکشن استرینگ داخل کد اصلا کار درستی نیست . این کار رو در قپفایلهای خارجی مانند web.config باید انجام بدید.
بعد داخل یک static class یک static property به نام کانکشن استرینگ می نویسید و از اونجا هر دفعه می خونید

fakhravari
شنبه 18 آذر 1391, 16:46 عصر
http://barnamenevis.org/showthread.php?319398

Mohamad1362
یک شنبه 19 آذر 1391, 10:02 صبح
بله من هم مشکل دارم میشه کسی یه کد بهیه برای تعریف کانکشن بنویسه تا هیچ مشکلی هیچ وقت نداشته باشیم
یکی از دوستان اگه میشه لطف کنه کد کانکشن رو در برنامه سه لایه بنویسه .احساس میکنم کدام اصلا بهینه نیست رشته اتصال رو اینجوری توی WebConfig تعریف میکنی :
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="DatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
بعد داخل کد C# اینجوری فراخوانی میکنی :
String cString = System.Configuration.ConfigurationManager.Connecti onStrings["DatabaseConnectionString"].ConnectionString;
SqlConnection sqlCon = new SqlConnection(cString);

sh-eng
یک شنبه 19 آذر 1391, 13:07 عصر
رشته اتصال رو اینجوری توی WebConfig تعریف میکنی :
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="DatabaseConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
بعد داخل کد C# اینجوری فراخوانی میکنی :
String cString = System.Configuration.ConfigurationManager.Connecti onStrings["DatabaseConnectionString"].ConnectionString;
SqlConnection sqlCon = new SqlConnection(cString);

این می دونم می خوام داخل کلاس صداش بزنم

sh-eng
یک شنبه 19 آذر 1391, 13:07 عصر
ینی کلاس my connection تعریف کردم اون بالا منظورم استفاده از اون کلاسه

alonemm
یک شنبه 19 آذر 1391, 18:53 عصر
باسلام:

در لینک زیر یک مقاله آموزشی در این مورد تهیه شده:

مقاله: پیاده سازی و ساخت DataAccessLayer (معماری چندلایه دسترسی به داده) در قالب یک پروژه (http://barnamenevis.org/showthread.php?324837-%D9%85%D9%82%D8%A7%D9%84%D9%87-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%88-%D8%B3%D8%A7%D8%AE%D8%AA-DataAccessLayer-(%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%DA%86%D9%86%D8%AF%D9%84%D8%A7%DB%8C%D9%87-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-%D8%AF%D8%A7%D8%AF%D9%87)-%D8%AF%D8%B1-%D9%82%D8%A7%D9%84%D8%A8-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87)