نخير دوست عزيز مفهمو attach ماسواي مفهوم كپي و پيست مي باشد . نمونه كدي براتون ميزارم البته فقط رشته كانكشن رو بقيه تنظيمات رو فكر كنم خودتان بلد باشيد
من خودم در برنامه ام كد زير را بكار برده ام و كار هم كرده است ابتدا به كمك رشته زير بررسي ميكنم ببينم فايل من قبلا اتچ شده است يا نه:
string ConStr ="Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=True";
SqlConnection con = newSqlConnection(ConStr);
string CmdStr = "select * from sysdatabases where name='" + FileName + "'";
SqlCommand com = newSqlCommand(CmdStr, con);
try
{
con.Open();
}
catch
{
returnfalse;
}
if (com.ExecuteScalar()==null)
returnfalse;
else
returntrue;
اين را در يك كلاس قرار داده بودم و filename هم كه در بالا به آن اشاره شده نام پايگاه داده ما هست مثل atabase1.mdf
خوب تو خود برنامه هم تعريف كردم :
if (!func1("database1.mdf"))
{
Connection_String_Final = "Server = .\sqlexpress; AttachDbFilename= database1.mdf; database =database1.mdf; ";
}
else
{
Connection_String_Final = "Server = .\sqlexpress ; Initial Catalog= database1.mdf ";
}
كه بعد با استفاده از كانكشن استرينگ ايجاد شده يك متغير كانكشن تعريف كرده و اجرا ميكردم . در اين حالت برنامه بعد از نصب براي اجراي بار اول اگر در سيستمي كه نصب ميگردد sqlexpress نصب باشد فايل را اتچ مبكند و براي اجراي هاي بعدي فقط با سرور ارتباط برقرار ميكند و بر روي فاسل تنظيم ميشود.
لازم به ذكر است sqlexpress نسخه اي از sql server هستش فرقي با اون نميكنه البته تو امكانات و محدوديتها حتما كه فرق داره ولي طرز ارتباط با اون فرقي نميكنه . اگر در جملاتم اشتباهي باشه اساتيد فن اميدوارم منو ببخشن و البته ارشاد نمايند