PDA

View Full Version : سوال در مورد Connection String برای sqlserver



parsa118
جمعه 02 اردیبهشت 1390, 09:18 صبح
سلام و خسته نباشید

دوستان سوالی داشتم که جستجو هم در این مورد کردم ولی به نتیجه ای نرسیدم
اکثر دوستان و خودم برای اتصال به SQLEXPRESS از کد زیر استفاده می کنند یا یک چیزی شبیه به کد زیر که هیچ مشکلی نداره و به خوبی جواب میده

Dim con As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & Application.StartupPath & "\bank\bank_Data.mdf;Integrated Security=True;User Instance=True")
ولی یک مسئله ای هست اگر از این کد برای attach دیتابیس استفاده شه در صورتی که sqlserver کامل نصب بشه با محیط مدیریت و ... کد بالا جواب نمیده و خطا میده برای اینکه ما قید کردیم SQLEXPRESS
آیا راهی هست که بشه در دو حالت استفاده کرد یعنی هم موقعی که sqlserver کامل نصب میشه و هم به صورت
EXPRESS

barbodsoft.com
جمعه 02 اردیبهشت 1390, 17:28 عصر
می تونی از هر دو کانکشن همزمان استفاده کنی و داخل یک try قرار بدی اگه این نشود اون یکی



Dim con As SqlConnection
Try
con = New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" & Application.StartupPath & "\bank\bank_Data.mdf;Integrated Security=True;User Instance=True")
con.Open()
Catch ex As Exception
con = New SqlConnection("Data Source=.;AttachDbFilename=" & Application.StartupPath & "\bank\bank_Data.mdf;Integrated Security=True;User Instance=True")
con.Open()
End Try

parsa118
دوشنبه 05 اردیبهشت 1390, 07:08 صبح
با تشکر از شما دوست عزیز که پاسخگوی سوالات هستید
ولی فکر میکنم اینطوری زیاد جالب نباشه با این روشی که شما می گید من باید در هر قسمت که بخوام اطلاعاتی رو بخونم یا وارد کنم باید قبلش از کد بالا استفاده کنم و کانکشها چک بشه در صورتی که در روش معمول کانکش یک بار تعریف میکنم و در کل فرم میشه ازش استفاده کرد یا حتی وقتی به صورت public تعریف sqlconnection رو در فرم های دیگه هم میشه از همون کانکش فرم اصلی استفاده کرد

barbodsoft.com
دوشنبه 05 اردیبهشت 1390, 09:31 صبح
شما می تونی کانکشن رو یک بار به صورت پابلیک تعریف کنی و سپس یک بار بهش مقدار بدی بعد هر جا خواستی ازش استفاده می کنی. اگه 100 تا فرم هم داشته باشی بازم می تونی ازش استفاده کنی.

parsa118
دوشنبه 05 اردیبهشت 1390, 14:03 عصر
با تشکر از شما بله درسته میشه کانکشن رو public تعریف کرد و در همه جا ازش استفاده کرد
مشکل اینجاست که در این صورت روشی که شما در بالا گفتید جواب نمیده یعنی نمیشه از try استفاده کرد تا بشه دو تا کانکشن رو در برنامه داشت
من بیشتر مشکلم روی اینه که من روی سیستم مشتریم sqlserver express نصب میکنم اگر روزی اومدیم و sqlserver کامل رو نصب کردیم بازم برنامه جواب بده و احتیاج به تغییر در برنامه نداشته باشه چون در صورتی که در تعریف کانکش SQLEXPRESS رو قید کنید دیگه جواب نمیده

barbodsoft.com
دوشنبه 05 اردیبهشت 1390, 14:26 عصر
من مدت زیادی هست که از این روش استفاده می کنم. تو برنامه ستاپی که ساختم sqlexpress رو نصب می کنه. اولین باری که برنامه اجرا می شه اول چک می کنه این دیتابیس نصب هست یا نه و اول سعی می کنه از ورژن غیر از sqlexpress برای اتچ کردن دیتابیس استفاده اگه نصب نباشه اتچ نمی شه بعد می ره از sqlexpress عمل اتچ رو انجام می ده و از این به بعد فقط از همین کانکشن استفاده می شه. یعنی حتی اگه هر دو نسخه هم نصب باشه به هر حال فقط از یکی استفاده می شه. خوب اگه کار بر بعدا نسخه بالاتری از sqlexpressنصب کنه چی ؟ بازم هیچ مشکلی نداره. من که مشکلی ندیدم تا حالا.

parsa118
دوشنبه 05 اردیبهشت 1390, 14:38 عصر
منم دقیقا همین رو که گفتید منظورم هستش یعنی چک بشه که کدوم نسخه sqlserver نصب هستش بعد از کانکش مربوط به اون نسخه استفاده بشه ولی نمیدونم باید چه کدی بنویسم که چک کنه و کانکشن مربوطه رو استفاده کنه
کد Try Catch رو که نمیشه در قسمت public استفاده کرد پس شما چه کدی استفاده کردید ؟

barbodsoft.com
دوشنبه 05 اردیبهشت 1390, 14:49 عصر
شما تعریف می کنی


Public con As SqlConnection


بعد هر جا خواستی بهش مقدار می دی. حال تو try یا هر جای دیگه. خیلی ساده هست.

m.soleimani
دوشنبه 05 اردیبهشت 1390, 15:18 عصر
برای هر کاری کلی راه حل هست شما یه تابع بنویس که یه کانکشن رو به عنوان ورودی دریافت می‌کنه اون کنترل خطا یا هر کار دیگه رو هم توی اون انجام بده حالا هرجا که لازم دیدی یه بار اون تابع رو با کانکشنی که به صورت پابلیک تعریف کردی صدا بزن ./