PDA

View Full Version : حرفه ای: چک کردن Attach بانک



kh1387
جمعه 17 مهر 1388, 23:52 عصر
سلام
با فرمول و کدی میتونیم بانک SQL رو به برنامه attach کنیم.
حالا اگه یه بار برنامه Attach بشه و کد اتچ بانک در هنگام لود شدن فرم برنامه باشه به کد ایراد میگیره و میگه این بانک اتچ شده.
حالا روشی میخوام که اول چک کنه که بانک اتچه.
چه کنم؟:متفکر:

ASKaffash
شنبه 18 مهر 1388, 15:04 عصر
سلام
با SP_Attached متصل شود ولی قبل از هرکار یک select سرکاری از یکی از جداول گرفته شود و با کنترل خطا وضعیت Attached بررسی شود

kh1387
شنبه 18 مهر 1388, 18:41 عصر
سلام
با SP_Attached متصل شود ولی قبل از هرکار یک select سرکاری از یکی از جداول گرفته شود و با کنترل خطا وضعیت Attached بررسی شود
اگه براتون مقدوره کدش رو بنویسید.
قبلا از همکاریتان متشکرم

alihassanabadi
شنبه 18 مهر 1388, 19:12 عصر
سلام
میتونی کدت رو بزاری تو try-catch
توی catch پیغام مناسب داده بشه

ASKaffash
یک شنبه 19 مهر 1388, 08:18 صبح
اگه براتون مقدوره کدش رو بنویسید.
قبلا از همکاریتان متشکرم



public static bool SQLServerAttach(string ConStrMaster, string ConStrDB, string PathName, string FileName, string DataBaseName)
{
#region DataBase Installed ?
try
{
RunSQL("Select Top 0 * From sysfiles", ConStrDB, DataBaseType.SQLServer);
return true;
}
catch { }
#endregion
#region Installing DataBase ...
try
{
string TmpAttachCMD = @"EXEC sp_attach_db @dbname = N'" + DataBaseName + @"',@filename1 = N'" + PathName + @"\" + FileName + @"_Data.MDF',@filename2 = N'" + PathName + @"\" + FileName + @"_Log.LDF'";
RunSQL(TmpAttachCMD, ConStrMaster, DataBaseType.SQLServer);
while (true)
{
try
{
RunSQL("Select Top 0 * From sysfiles", ConStrDB, DataBaseType.SQLServer);
break;
}
catch
{ }
}
}
catch
{
Methods.MessageBox("بـانـک اطــلاعـاتي وجــود نــدارد");
return false;
}
#endregion
return true;
}

alihassanabadi
یک شنبه 19 مهر 1388, 09:48 صبح
اگه براتون مقدوره کدش رو بنویسید.
قبلا از همکاریتان متشکرم
سلام
کد اتچ رو بزار داخل try
وپیغام مناسب رو داخل catch نمایش بده


Try
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source=(local);Initial Catalog=master;Integrated Security=SSPI";
conn.Open();
SqlCommand myCommand = conn.CreateCommand();
myCommand.CommandText = "EXEC sp_attach_db @dbname = 'ATestDB',@filename1 = 'C:\\TestPath\\ATestDB_Data.MDF',@filename2 = 'C:\\TestPath\\ATestDB_Log.LDF'";
myCommand.ExecuteScalar();
}
Catch
{
MessageBox.show(‘پایگاه قبلا اتچ شده است’);
}

البته میتونی از openfiledialog برای اینکه کاربر به صورت دستی انتخاب کنه استفاده کنی
و روش های دیگه
با تشکر.