PDA

نسخه کامل مشاهده نسخه کامل : یه مشکل در دیتابیس



aliaghaaaaa
21-07-2009, 16:52
سلام.من دارم تو سی شارپ یه برنامه می نویسم که توش از دیتابیس خود ویژوال استودیو استفاده کردم. دیتابیس رو هم از طریق کدنویسی به برنامه وصل کردم.( از طریق connection string ).
حالا برنامه روی هر سیستمی که میره، آدرس connection string برنامه عوض میشه.( به خاطر اسم درایو و محل نصب ). چکار کنم که coonection string عوض نشه؟
ممنون.

mahdi7s
21-07-2009, 17:49
سلام

شما باید دیتابیس رو در محل اجرای برنامه قرار بدین...

و محل اجرای برنامه رو می تونی اینطوری به دست بیاری :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.

aliaghaaaaa
21-07-2009, 19:03
سلام.
میشه یه کم بیشتر توضیح بدین؟
مثلا یه خط کد بنویسید.
ممنون.

mahdi7s
21-07-2009, 21:55
آیا دیتابیس رو attach می کنید؟؟!

aliaghaaaaa
22-07-2009, 08:38
بله. فقط می خوام رو هر سیستم دیگه ای که اجرا میشه آدرس بنکش رو خودش داشته باشه. یعنی یه آدرس ثابت نباشه.
نسبی باشه.
ممنون.

mahdi7s
22-07-2009, 10:39
سلام

خوب اینکه دیگه کاری نداره شما باید دو تا فایل دیتابیس رو در کنار exe برنامه قرار بدین و نحوه ی پیدا کردن پوشه ی exe رو هم که گفتم نهایتا این کد می تونه شما رو راهنمایی کنه :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

در کد بالا به شرط موجود بودن فایلهای دیتابیس در کنار exe شما می تونید تنها با دادن نام دیتابیستان به DatabaseName و قرار دادن AttachString در رشته ی فرمان همون کاری که گفتید رو انجام بدید.


موفق باشید.

aliaghaaaaa
22-07-2009, 12:08
سلام.
میشه رو کد پایین یه مثال بنویسید؟
کدی که من نوشتم اینه:
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"I:\\proje2\\CN-CALC\\CN-CALC\\Database1.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlCommand cmd1 = new SqlCommand("update fi set fi='" + textBox5.Text + "'", con);
cmd1.Connection.Open();
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = cmd1;
DataTable dt = new DataTable();
adp.Fill(dt);
cmd1.Connection.Dispose();
ممنون.

mahdi7s
22-07-2009, 12:36
دوست عزیز شما از کد زیر استفاده کردید؟؟


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

کار متد string.Format در کد قبلی رو فهمیدید؟؟

نه!!!

لطفا کمی خودتان فکر کنید و...

aliaghaaaaa
25-07-2009, 16:43
سلام. من از عباراتی که تو کد هاتون ازشون استفاده کردین، سر در نیاوردم. عباراتی مثل :
EXEC sp_attach_db @dbname = N'{0}'," +"@filename1 = N'{1}',@filename2 = N'{2}'
و
@"{0}\{1}.mdf"
و
@"{0}\{1}_log.ldf
میشه یه کم راجع بهشون توضیح بدین؟
ممنون میشم اگه توضیحات کامل بدین چون من خیلی خیلی خیلی خیلی ... به این کد احتیاج دارم.
ممنون.

mahdi7s
25-07-2009, 21:51
سلام

من ان کدها رو گذاشتم تا نحوه ی بدست آوردن مکان دیتابیس رو به طور دینامیک بهتون نشون بدم.
شما می توانستیت به همان شکلی که خودتان attach رو انجام می دادید کد رو تغییر بدین.
اما بهتر است برای attach کردن از sp_attach_db استفاده کنید که کدش رو گذاشتم.

و اما کد شما اگه به اینصورت تغییر کنه مشکلش حل میشه->


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

توجه داشته باشید که در کد بالا باید فایلهای دیتابیس برنامه در محل exe برنامه قرار بگیرند.
و DatabaseName رو به نام دیتابیس تغییر بدید.

موفق باشید.

aliaghaaaaa
26-07-2009, 09:35
سلام.
ممنون.