PDA

View Full Version : سوال: تکلیف رشته کانکشن در فایل اجرایی تو یه کامپیوتردیگه چی میشه ؟



ahmad65
سه شنبه 19 آبان 1388, 23:56 عصر
سلام .
من تو برنامم از بانک اطلاعاتی استفاده کردم . یک رشته اتصال به بانک اطلاعاتی درست کردم به شکل زیر :


Public con As New SqlConnection("data source=ADMIN-PC\SQLEXPRESS;initial catalog=ketabkhaneh;integrated security=true")

همانطور که میبینید دیتا سورس مطعلق به کامپیوتره منه وقتی برنامه رو بصورت اجرایی در آوردم و خواستم رو سیستم دیگه اجرا کنم اونوقت وضعیت چطوری میشه ممکنه دیتا سورس رو سیستم دیگه فرق داشته باشه اونوقت برنامه من به بانک وصل نمیشه .

ممنون میشم راهنماییم کنید .

DoDoklak
چهارشنبه 20 آبان 1388, 09:55 صبح
در قسمت DataSource به جای نام کامپیوتر خودتون از نقطه استفاده کنید تا همیشه کامپیتور جاری رو در نظر بگیره

data source=.\SQLEXPRESS;initial catalog=ketabkhaneh;integrated security=true

pourang_us
چهارشنبه 20 آبان 1388, 10:01 صبح
دوست عزیز

درود


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



موفق باشی

faravani
چهارشنبه 20 آبان 1388, 10:44 صبح
سلام
اگه تو اون کامپیوتر مقصد SQL SERVER نصب شده باشه تقریبا مشکل حل میشه
ولی اگه بخواهیم برنامه رو به طور عمومی پخش کنیم باید از روش دیگه ای استفاده کنیم
بعنوان مثال وقتی برنامه لود میشه بگیم برو در مسیر جاری جدولمون رو درست کن
نظر دوستان در این مورد چیه؟

shahab2025
چهارشنبه 20 آبان 1388, 12:36 عصر
شما میتونی مسیر بانکت رو در یک فایل Text نگهداری کنی و در هر بار که برنامه لود میشه چک کنه اگر اون فایل موجود هست مسیر رو از فایل دریافت کنه و اگر موجود نیست مسیر رو از کار بر دریافت کنه و در فایل بریزه این ساده ترین راه هست



سلام
من با اين نظر موافقم ولي بهتر نيست از فايل xml استفاده كنيم؟؟؟:متفکر:
البته من خودم دقيقاً نميدونم چطوري ميشه از اين متد استفاده كرد.

pourang_us
چهارشنبه 20 آبان 1388, 16:07 عصر
دوست عزیز
فرمت فایل مهم نیست عملکرد فایل مهمه
به کد زیر یه نگاه بنداز شاید به دردت بخوره


Try
FileOpen(1, Application.StartupPath + "\Config.txt", OpenMode.Input)
FileName = LineInput(1)
FileClose(1)
If Not File.Exists(FileName) Then
Err.Raise(9)
End If

Catch When Err.Number > 0
If Err.Number = 9 Then
While Not File.Exists(FileName)
MessageBox.Show("...فایل پایگاه داده پیدا نشد! لطفاً مکان آن را مشخص کنید", "فایل پایگاه داده", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)
Dialog.Filter = "Microsoft Access(*.MDB)|*.MDB"
Dialog.ShowDialog()
If Dialog.FileName <> "" Then
FileName = Dialog.FileName
FileOpen(1, Application.StartupPath + "\Config.txt", OpenMode.Output)
PrintLine(1, FileName)
FileClose(1)
End If
End While
End If
End Try

DoDoklak
چهارشنبه 20 آبان 1388, 17:55 عصر
برای Conection String مورد نظر اصلا احتیاجی به نگهداری مسیر فایل یا دونستنش نیست

data source=.\SQLEXPRESS;initial catalog=ketabkhaneh;integrated security=true
برای اینکه این کانیکشن مخصوص وقتیکه بانک تو SSMS به حالت Attach درآمده باشه و نیازی نیست شما محل قرار گرفتن بانکو بدونی.ولی در روشی که فایل تو بانک Attach نشه اونوقت باید مسیر بانک رو بدونی و بصورت پیش فرض بهتره داخل پوشه برنامه باشه و کونیکشن رو هم باید اینجوری نوشت

Data Source=.\SQLEXPRESS;AttachDbFilename=" & My.Application.Info.DirectoryPath + "\ketabkhaneh.mdf" & ";Integrated Security=True;Connect Timeout=30;User Instance=True

میتونید در حالت شبکه حالت Log In هم بزارید
http://www.mihanupload.com/images/co31eo1kbcxmuirc8vq.jpg

ahmad65
چهارشنبه 20 آبان 1388, 22:53 عصر
دسته همتون درد نکنه برای اولین بار بود این تعداد به سوالم جواب دادند امیدوارم موفق باشید .

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

DoDoklak
پنج شنبه 21 آبان 1388, 11:32 صبح
ولی اینبار با دفعه قبل فرقش اینه که بانک attach شده و حالا سوالم اینه که برنامه اینبار سعی نمیکنه دوباره بانک رو attach کنه ؟ این رشته کد پیغام خطا بوجود نمیاره ؟

در روشی که باید بانک Attach شده باشد شما باید قبل از همه چیز به دنبال بانک تون تو سرور میگردید اگر Attach شده بود که عملیات Attach لغو میشه و برنامه رو اجرا میکنید در غیر اینصورت فایل رو Attach میکنید .