PDA

View Full Version : حرفه ای: اجرای یک کد در فرم لود فقط یکبار



asemaneiran
شنبه 28 دی 1392, 09:51 صبح
سلام
من دربرنامه نیاز دارم که اول بانکم که sqlite هست در مکانی مثلا درایو سی کپی کنم
توی لود فرم کد کپی رو نوشتم
مشکل اینجاس که هربار برنامه اجرا میشه بانک رو در این ادرس کپی می کنه
من میخوام فقط یکبار اونم برا اولین بار که برنامه اجرا میشه بانک رو کپی کنه
ممنون میشم راهنمایی کنید
و
چطور میتونم ادرس بانک sqliteرو در کانکشن استرینگ طوری قرار بدم که حتی بدون نیاز به کپی بانک در درایوی
از توی فولدر debug که بانکم اونجاست
بانک رو بخونه , و اتصال برقرار بشه
اخه از برنامه ام ستاپ ساختم و موقع نصب برنامه در استارت اپ قرار میگره (بانکم هم در پوشه دیباگ هست) ممنون میشم اینم کمک کنید

mousa1992
شنبه 28 دی 1392, 10:21 صبح
برای جلوگیری از کپی چندباره فایل ها میتونید با استفاده از متد Exist از کلاس File چک کنید که ایا در مسیر مورد نظرتون چنین فایلی وجود داره یا نه ؛ اگه نبود کپی میکنید در غیر این صورت
"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\PPJ.mdf;Integrated Security=True;User Instance=True"

این connection string مربوط به sql هست و DataDirectory اشاره داره به محل فایل اجرایی برنامه و یا Application.StartupPath هم اشاره به محل برنامه داره که شما میتونید فایل های دیتابیستون رو در محل برنامه قرار بدید
زمان ساخت نصب شما میتونید فایل های database رو توی فولدری کنار برنامتون و یا مستقیما کنار فایل اجرایی قرار بدید (اگه با خود ویژوال setup میسازید کلیک راست میکنید تو قسمت Application و Add File رو میزنید و ....

asemaneiran
سه شنبه 01 بهمن 1392, 09:12 صبح
خواهش میکنم یکی کمک کنه چی باید بنویسم تا فقط یکبار کپی بشه و یا ادرس دهی درستش چیه که از کنار برنامه بانک رو بخونه(با توجه به اینکه برنامه ستاپی هست) ممنون

Mousavmousab
سه شنبه 01 بهمن 1392, 13:45 عصر
چطور میتونم ادرس بانک sqliteرو در کانکشن استرینگ طوری قرار بدم که حتی بدون نیاز به کپی بانک در درایوی
از توی فولدر debug که بانکم اونجاست
بانک رو بخونه , و اتصال برقرار بشه
اخه از برنامه ام ستاپ ساختم و موقع نصب برنامه در استارت اپ قرار میگره (بانکم هم در پوشه دیباگ هست) ممنون میشم اینم کمک کنید


نیازی نیست توی Form_Load این طوری کد بنویسی. Setup ساز پس کار چیه ؟ خودش این کار را انجام میده. در ضمن شما اگه دوست داشتی فقط یک بار یک دستوری را توی فرم لود انجام بدی می تونی از Registry کمک بگیری. یک کلید می سازی و مقدارش را میده 0 ( به صورت پیش فرض) حالا توی فرم لود اگه مقدار این کلید صفر است شما باید بانک را کپی کنی.و بعدش مقدار 0 را به 1 تغییر بدی.
دفعه های دیگه که برنامه لود میشه چون اون متغیر توی Registy یک هست دیگه عمل کپی انجام نمیشه
بازم می گم این سناریو را برای این کار پیش نهاد نمی کنم. فقط خواستم جواب سوال قبلی را بدم
موفق باشی