PDA

View Full Version : قسمت اول Connection String



اوبالیت به بو
یک شنبه 09 خرداد 1389, 18:47 عصر
سلام


"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\GridView_DB.mdf;Integrated Security=True;User Instance=True"/
قسمت Bold شده حاوی چه نکته ای هست؟ منظور چیست؟

Sajjad.Aghapour
یک شنبه 09 خرداد 1389, 19:26 عصر
معمولا برای Attach کردن دیتابیس در SQLExpress از این قسمت استفاده میشه....

در واقع شما توسط این قسمت فایل mdf موجود در مسیر حاری برنامه رو به SQL‌ Engine اتچ میکنی تا بتونی در طول برنامه توسط این Engine عملیات مورد نظر رو روی دیتابیست انجام بدی...

ASKaffash
دوشنبه 10 خرداد 1389, 08:08 صبح
معمولا برای Attach کردن دیتابیس در SQLExpress از این قسمت استفاده میشه....

در واقع شما توسط این قسمت فایل mdf موجود در مسیر حاری برنامه رو به SQL‌ Engine اتچ میکنی تا بتونی در طول برنامه توسط این Engine عملیات مورد نظر رو روی دیتابیست انجام بدی...
سلام
ولی Attach به معنی نسخه های SQLServer نیست و به همین علت است که این ConnectionString برای Restore استفاده نمی شود تنها دسترسی به بانک را مقدور می کند اگر از یک SQLServer دیگر به Express وصل شوید خواهید دید که Attach نیست

اوبالیت به بو
دوشنبه 10 خرداد 1389, 09:38 صبح
سلام

تا به حال دنبال ساخت Setup نبودم و یک سالی هم از دنیای win دور بودم. حالا می خوام یاد بگیرم.

می خوام وقتی که Setup رو ساختم DataBase بدون مشکل و بدون دستکاری نصب بشه و برنامه کار بکنه.
مشکل بر سر ساخت یک Connection مطمئن هست. امروز یک کدی رو در این تالار دیدم که هنوز سیستمی نبوده که تستش کنم.
کد مورد نظر این هستش که می گه اول یه Connection از جنس SqlConnection بساز و:


connection = "Server=.;Integrated Security=True;AttachDBFileName =" Application.StartupPath + "\\MyDB.mdf";DataBase=MyDB"

طبق اون پست این کد میاد DataBase رو به نرم افزار SqlServer وصل (Attach) می کنه. همچنین گفته که یک بار بیا connection رو باز و بسته کن:


connection.Open();
connection.Close();

حالا من نمی دونم اگر این کد رو بنویسم DB ما Attach میشه یا نه.

مرحله 2) حالا می گه بیا ConnectionString اصلی رو بساز و کار کن:


Conn.ConnectionString = "DataSource=.;Initial Catalog=MyDB;Integrated Security=True;


حالا می خوام بدونم روش این هست؟

آیا باید گزینه دیگه ای رو اصلاح کنم؟

همین جواب می ده؟
کم کسر نداره یا داره؟

ممنون

ASKaffash
دوشنبه 10 خرداد 1389, 09:56 صبح
سلام
اگر از ConnectionString بدون پارامتر AttachDbFilename= استفاده می شود باید با کد SP_Attach بانک برای SQLServer تعریف شود

Sajjad.Aghapour
دوشنبه 10 خرداد 1389, 13:10 عصر
ولی Attach به معنی نسخه های SQLServer نیست

بله %100....
منظور توضیح کدی بود که در بالا ارائه شده بود و از نسخه Express استفاده کرده بود....



مشکل بر سر ساخت یک Connection مطمئن هست. امروز یک کدی رو در این تالار دیدم که هنوز سیستمی نبوده که تستش کنم.
کد مورد نظر این هستش که می گه اول یه Connection از جنس SqlConnection بساز و:
کد:
connection = "Server=.;Integrated Security=True;AttachDBFileName =" Application.StartupPath + "\\MyDB.mdf";DataBase=MyDB"


من به شخصه این کارو نمیکنم.اگر از نسخه های Standard استفاده میکنی میتونی قبل از ایجاد Connection و ست کردن ConnectionString دی بی خودت رو به سرور Attach کنید.برای این کار دو راه (یا شایدم بیشتر، آدمیه دیگه نمیشه کاریش کرد:لبخند:) دارید:

1. از یک Stored Procedure که در SQL Server وجود داره یعنی sp_attach_db استفاده کنی(syntax اون رو میتونی از تو helpش بخونی)
2. از Smo استفاده کنی که در SDK هایی که خود SQL Server ارائه میده وجود داره....

حالا میتونی از ConnectionString بدن پارامترهای اضافی استفاده کنی...


Data Source=.; initial catalog = dbName; Integrated Security = true

ostovarit
سه شنبه 02 آذر 1389, 15:51 عصر
دو ستان عزیز من هم مشکلی در این مورد دارم که سوالم رو در تاپیک زیر مطرح کردم لطف کنید بررسی کنید:
http://barnamenevis.org/forum/showthread.php?t=260870

csharpprogramer88
سه شنبه 02 آذر 1389, 19:16 عصر
سلام
دوستان چیزهایی را که دارید بحث میکنید برای کدام ورژن اس کیو ال هست و آیا حتما خود اس کیو ال باید بر روی سیستم مقصد حتما نصب باشه



می خوام وقتی که Setup رو ساختم DataBase بدون مشکل و بدون دستکاری نصب بشه و برنامه کار بکنه.

چطوری میشه که با بدون نصب اس کیو ال از برنامه استفاده کرد

hakelberfin
سه شنبه 02 آذر 1389, 22:42 عصر
سلام

چطوری میشه که با بدون نصب اس کیو ال از برنامه استفاده کرد
اگر از SQLEXPRESS استفاده میکنید موقع درست کردن Setup میتونید گزینه ی مربوط به اونو تیک بزنید
SQL Native و موقع نصب برنامه در سیستم کاربر SQLEXPRESS هم نصب میشه.
اگه از EXPRESS استفاده نکنید باید SQL SERVER رو بصورت دستی در سیستم کاربر نصب کنید چون اینکار از طریق Setup امکان پذیر نیست.
قرار دادن دیتابیس در مسیر اجرایی برنامه هم فکر خوبیست و باعث میشه بعد از نصب و بدون دستکاری برنامه به درستی کار کنه


طبق اون پست این کد میاد DataBase رو به نرم افزار SqlServer وصل (Attach) می کنه. همچنین گفته که یک بار بیا connection رو باز و بسته کن:
کد:
connection.Open();
connection.Close();
حالا من نمی دونم اگر این کد رو بنویسم DB ما Attach میشه یا نه.

مرحله 2) حالا می گه بیا ConnectionString اصلی رو بساز و کار کن:
کد:
Conn.ConnectionString = "DataSource=.;Initial Catalog=MyDB;Integrated Security=True;
حالا می خوام بدونم روش این هست؟

دوست عزیز هر دو ConnectioString میتونن یکی باشن . درستشم همینه .
اون دوستمون که کد رو نوشته واقعا طرز فکرش خوب بوده.
شما میتونید در کلاسی تابعی بنویسید که نوع برگشتیش Boolean باشه مثل زیر:


public static ConnectionString ;
public static bool BuildingConnectionString()
{
try
{

string conString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath.ToString() + @"\MyData.MDF;Integrated Security=True;User Instance=True";
SqlConnection SqlConnection = new SqlConnection(conString);
SqlConnection.Open();
SqlConnection.Close();

ConnectionString = conString;

return true;

}
catch (System.Exception exp)
{
MessageBox.Show("DataBase Error ", "برنامه نمی تواند به پایگاه داده متصل شود", MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
}
}

و در کلاس Program از اون استفاده کنید


[STAThread]
static void Main()
{
if (ClassNameThatInclude_BuildingConnectionString.Bui ldingConnectionString() == false)
return;
else
{
Application.Run(new FormMain());

}
}

اگه برنامه بدون خطا ایجاد بشه
حالا شما در هر صفحه ای که میخواین با بانک ارتباط برقرار کنید میتونید از متغییر استاتیک ConnectionString
استفاده کنید