PDA

View Full Version : سوال: اتصال به پایگاه داده در هنگام اجرای برنامه با LINQ



morteza561
جمعه 25 مرداد 1392, 21:57 عصر
سلام
وقت همه عزیزان بخیر

سوالم این بود که چطوری میتونم موقعی که برنامه اجرا شده، آدرس یه فایل mdf رو از کاربر بگیرم و مثلا اون فایلش رو توی یه دیتاگرید نشون بدم؟

موقع کد نویسی مشکلی ندارم. یه پایگاه داده sql می سازم، با چند تا Table و Stored Procedure، یه Linq to SQL میذارم روی برنامه، اطلاعات این پایگاه داده رو میندازم توی این DataClass که ساخته بودم. بعدشم با دستورایی مثل from ... where و ... ازش اطلاعاتم رو میخونم.

اما مشکل اینجاست که اگه بخوام یه کاری کنم که کاربر پایگاه داده رو انتخاب کنه و برنامه موقع اجرا اون فایل رو به عنوان پایگاه داده استفاده کنه، نمیدونم باید چی کار کنم؟!

ممنون میشم اگه یکی از دوستان یه راهنمایی کوچولو بهم بکنه. یه دنیا ممنون ...

morteza561
یک شنبه 27 مرداد 1392, 14:46 عصر
دوستان اگه یه راهنمایی کوچولو هم بکنید کارم راه میفته ها :ناراحت:
الان خودم از یه روش عجیب غریب من درآوردی استفاده می کنم! اول همون دیتابیسی که قراره کاربر موقع اجرا به برنامه بده رو میسازم، دقیقا همون Table ها رو توش میذارم، بعد وقتی برنامه اجرا میشه با ConfigurationManager رشته اتصالم(connectionString) رو عوض می کنم! :لبخند:
فکر کنم این مسخره ترین راهکار ممکن برای این موضوع باشه ولی هیچ راهکار بهینه تری پیدا نکردم.
خواهشا اگه چیزی به ذهنتون رسید بفرمایید شاید تونستم روشم رو عوض کنم.

barnamenevisjavan
یک شنبه 27 مرداد 1392, 15:43 عصر
خوب از Open File Dialog استفاده بکن
Dim path As string
Dim enmResult As System.Windows.Forms.DialogResult = OpenFileDialog1.ShowDialog()
If enmResult = System.Windows.Forms.DialogResult.OK Then
Path = OpenFileDialog1.FileName
label1.text=path
end if
یه openfile dialog بنداز رو فرم + یه لیبل + یه باتون هم بزار و تو رویداد کلیکش کد بالا رو بنویس حالا اگر اجرا کنی و روی باتون کلیک کنی یه پنجره باز میشه و اگر فایل موردنظر رو انتخاب و ok کنی توی لیبل آدرسش رو بهت نشون میده.حالا که آدرسش رو بدست آوردی راحت میتونی توی کد نویسی دیتابیس رو از اون آدرس بخونی

morteza561
یک شنبه 27 مرداد 1392, 20:14 عصر
ممنون بابت راهنماییت داداش. ولی مشکلم بعد از این مرحلست. فایل رو که میدونم کجاست و چطوری از کاربر آدرسش بگیرم
مشکلم این که نمیتونم اون فایلی که میده رو بخونم. اون فایل دیتابیس رو چطوری باید بازش کنم که توی یکی از دیتاگریدهام نشونش بدم؟
عین فایل معمولی با استریم ریدر و اینا که نمیشه خوند!! باید یه روشی باشه که بتونه اطلاعات جدولا رو بکشه بیرون دیگه :اشتباه:

Mahmoud.Afrad
یک شنبه 27 مرداد 1392, 20:19 عصر
جداول و ... دیتابیس باید عین دیتابیس خودت باشه. دراینصورت با همون تغییر کانکشن باید کار کنی. حالا میتونی به روش خودت بری و یا کانکشن رو در یک فایل دیگه قرار بدی و در استارت برنامه کانکشن رو بخونی و در ایجاد شئ از مدل کانکشن رو بهش پاس بدی.

morteza561
یک شنبه 27 مرداد 1392, 22:41 عصر
پس یعنی همون راهی که خودم رفتم درست بوده؟ عجیبه ها :لبخند:

ممنون. بازم اگه دوستان دیگه پیشنهاد بهتری دارند بفرمایند!

omidamiry
دوشنبه 04 شهریور 1392, 23:53 عصر
سلام و خسته نباشی

برای حل این مسئله شما طبق روال کدهاتون رو بنویسید و حتا تست کنیدکه ایراد نداشته باشه

در انتها

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

حالا برای راحتی بیشتر هر فرمی که لود میشه یه متغییر سرتاسری بگیر و همون اول مقدار بده وبع در توایع استفاده کن حتی به کلاسها ارسال کن

حالا متغیر کجاست :

این متغییر همراه خود اگزه است و مکان ذخیرشو خودش تعیین میکنه شما فقط رد رایت کن

از قسمت سولوشن ویژوال روی نام پروژه پروپرتیس بگیر برو قسمت ستینگ حالا جدولی میبینی که میتونی نام متغییر نوع متغییر و مقدار اون رو تعیین کنی

یه استرینگ برای اینجا کافیه .هر بار خاستی مقداررو رد کنی



project_name.propertice.defulte.variablename;
وبرای ذخیره تغییرات
project_name.propertice.defulte.save();



غلط املایی شاید داشته باشه

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


بازم سوال داشتید بفرمائید md_amiry20@yahoo.com