PDA

View Full Version : سوال: اتصال پایگاه در setup



sobijoon
جمعه 21 اسفند 1388, 20:02 عصر
سلام بچه ها
الان که این تایپیکو مینویسم واقعا درموندم
من په یه برنامه با vs 2008و sqlserver 2008 ساختم(نه express یا پایگاه vs).
حالا دارم براش setup میسازم.
متاسفانه فقط رو سیستم خودم کار میکنه.
با ساخت setupو آوردن برنامه های کمکی از جملهSQL EXPRESS مشکلی ندارم ولی وقتی برنامم رو سیستم دیگه اجرا میشه مشکل اتصال به پایگاه داده داره.
بعد کلی سرچ دیدم اکثرا از پایگاه داده خود VS که EXPRESS هست استفاده میکنن ومشکل چندانی ندارن...
من باید چیکار کنم برای اینکه مشکل اتصال برام پیش نیاد؟؟؟
لطفا کامل برام شرح بدید ،چون از یکی دو تا تایپیک نمونه که مشکل منو داشتن نتیجه ای نگرفتم!:عصبانی++::گیج:

cimiarnm
جمعه 21 اسفند 1388, 22:34 عصر
دوست عزيز شما بايد قبل از استفاده از پايگاه داده در برنامه خودتان به خصوص در سيستم ديگر آنرا اتچ كنيد . يعني بعد از نصب sql express و برنامه خودتان رشته كانكشن خود را طوري تنظيم كنيد كه در اولين اتصال خود پايگاه داده تان را به سرور اتچ نمايد . اگر سرچ كنيد تاپيك هاي زيادي رو تو همين سايت پيدا ميكنيد باز هم اگر لازم بود بگين نمونه كدبراتون بزارم

sobijoon
جمعه 21 اسفند 1388, 23:32 عصر
سلام ممنون که پاسخ دادید .
من تا کنون با EXPRESS کار نکردم یعنی فایلهای mdfو.. رو باید تو درایوی که sqlEXPRESSS هست pastکنم؟؟؟

cimiarnm
شنبه 22 اسفند 1388, 01:14 صبح
نخير دوست عزيز مفهمو attach ماسواي مفهوم كپي و پيست مي باشد . نمونه كدي براتون ميزارم البته فقط رشته كانكشن رو بقيه تنظيمات رو فكر كنم خودتان بلد باشيد
من خودم در برنامه ام كد زير را بكار برده ام و كار هم كرده است ابتدا به كمك رشته زير بررسي ميكنم ببينم فايل من قبلا اتچ شده است يا نه:



string ConStr ="Data Source=.\sqlexpress;Initial Catalog=master;Integrated Security=True";
SqlConnection con = new SqlConnection(ConStr);

string CmdStr = "select * from sysdatabases where name='" + FileName + "'";
SqlCommand com = new SqlCommand(CmdStr, con);

try
{
con.Open();
}
catch
{
return false;
}
if (com.ExecuteScalar()==null)
return false;
else
return true;

اين را در يك كلاس قرار داده بودم و 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 هستش فرقي با اون نميكنه البته تو امكانات و محدوديتها حتما كه فرق داره ولي طرز ارتباط با اون فرقي نميكنه . اگر در جملاتم اشتباهي باشه اساتيد فن اميدوارم منو ببخشن و البته ارشاد نمايند