# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > VB.NET >  connetion string تحت شبکه

## solmaz_zm

چه طوری می تونم  یک connection string تحت شبکه بسازم به طوری که دیتابیس روی یک سیستم به عنوان سرور باشه و برنامه از روی چند سیستم دیگر اجرا شودتوسط connection string به دیتابیس روی سیستم دیگه متصل شود..ip را به صورت استفاده کنم....
ممنون

----------


## omid_Ahmadi

در خود ConnectionString، به جای اینکه آدرس LocalHost رو به عنوان سرور وارد کنید، آدرس کامپیوتری که دیتابیس روی اون قرار داره رو وارد کنید. 

مثلاً در ConnectionString زیر به جای myServerAddress می تونید آدرس کامپیوتری که سرور هست رو وارد کنید:


Driver={SQL Server};Server=myServerAddress;Database=myDataBase  ;Uid=myUsername;Pwd=myPassword;


موفق باشید.

----------


## solmaz_zm

اگر امکان داره لطفا یه مثال به صورت آدرس بزنید...یعنی یه جورایی یه آدرس کامیپوتری....

----------


## sm

این روشی که دوستمون بهش اشاره کردند روش خوبیه بشرط اینکه نام یا IP سرور رو از قبل بدونید و توی Connection String تنظیم کنید.
اما معمولا این شکلی نیست. ممکنه که نام یا IP سرور عوض بشه.... درست هم نیست که کاربرمون رو محدود کنیم که شما حتما باید با این IP یا این نام باشین.
یه روش بسیار راحت و مطمئن استفاده از ODBC Connection هست.
در این خصوص اگر جستجو کنید توی این فوروم مطالب زیادی گیر میاد.

موفق باشید

----------


## reza1357

یک راه دیگه هم هست که Connection String رو خالی بزارین و هنگامی که فرم لود میشه اون رو دستی تعریف کنید و یا حتی یک متغییر Public تعریف کنید و در هنگام لود شدن فرم این متغییر را به خاصیت Connection String بریزید اینجوری دیگه اگه حتی نام بانک اطلاعاتتون هم عوض بشه برای برنامه تون مشکلی ایجاد نمیکنه.

----------


## aidinwashere

یه Stored Procedure هست که نام تمام کامپیوتر های شبکه رو برمیگردونه, جناب ثباتی احتمالا آشنا هستن.

----------


## solmaz_zm

> یک راه دیگه هم هست که Connection String رو خالی بزارین و هنگامی که فرم لود میشه اون رو دستی تعریف کنید و یا حتی یک متغییر Public تعریف کنید و در هنگام لود شدن فرم این متغییر را به خاصیت Connection String بریزید اینجوری دیگه اگه حتی نام بانک اطلاعاتتون هم عوض بشه برای برنامه تون مشکلی ایجاد نمیکنه.


اگه می شه یکم بیشتر توضیح بدین آخه من یه خورده تازه کارم... :ناراحت:

----------


## farazjoonam

من یه برنامه مثل همین که تو میخوای ساختم . به یاهو ID من PM بده اونجا سورسشو برات بفرستم

----------


## solmaz_zm

آیا نوشتن ip سرور به جای local hostکافی هست....
 

   Public conn As New SqlConnection("Data Source=localhost;trusted_connection=true;database=  salary")

----------


## aidinwashere

کلاینت ها اسمه سرور رو بدونن مگه کفایت نمیکنه؟

----------


## reza1357

> آیا نوشتن ip سرور به جای local hostکافی هست....
> 
> 
> Public conn As New SqlConnection("Data Source=localhost;trusted_connection=true;database=  salary")


بله نوشتن Ip یا نام کامپیوتر سرور کفایت میکنه در تمام فرم های برنامه از این متغییر میتونید استفاده کنید ولی بهتره متغیر رو از نوع رشته تعریف کنی چون اگه به جای کد نویسی از کنترل SqlConnection برای ارتباط استفاده کنی خاصیت ُString Connection اون باید از نوع String باشه که بتونی از این متغییر در کل برنامه استفاده کنی ولی اگه برنامه ات همیشه از کد نویسی برای برقراری ارتباط استفاده میکنید همین روش که بکاربردید صحیح است.

----------


## sm

بهترین راه حلی که وجود داره و من مدتهاست ازش استفاده می کنم و هیچ مشکلی هم ندارم استفاده از ODBC Connection هست...
توی بخش کریستال ریپورت در این باره یکی دوتا پست هست که توضیح نسبتا کاملی دادم
اگه لینکش و پیدا کردم میزارم

موفق باشید

----------


## sm

https://barnamenevis.org/showpo...99&postcount=4
https://barnamenevis.org/showpo...5&postcount=23
https://barnamenevis.org/showpo...3&postcount=37
https://barnamenevis.org/showpo...6&postcount=47
https://barnamenevis.org/showthread.php?t=47287

موفق باشید

----------


## reza1357

سرعت انتقال اطلاعات بین سرور و کلاینت ،این کنترل نسبت به کنترل اصلی بخصوص SqlConnection در حد بسیار پایینی است کنترلی که شما ازش استفاده میکنید مال مجموعه Office و بخصوص Access هست اگه بانک اطلاعاتی شما اکسس باشه بله ولی اگه مثلا Sql یا Oracle و غیره باشه بدرد نمیخوره.
موفق و پیروز باشید.

----------


## sm

شما با تکیه بر چه مستند و منطقی اینو میگین؟
ممنون میشم اگه مستندی در این زمینه دارین برام بزارینش
اگر هم تست کردین میشه نتایجتون رو بگین؟

موفق باشید

----------


## reza1357

چند جا اینو خوندم و بررسی کردم الان منبعش یادم نیست اگه پیدا کردم حتمن اینجا میزارم.

ولی کلا از نظر Ado.net مدیریت بانک های اطلاعاتی به سه دسته تقسیم میشوند:
1- مجموعه Office و بخصوص access
2- Sql Server
3- سایر مدیریتهای دیگه مثلا Oracle ، Foxpro و غیره
هر کدام از این مدیریتها دارای ابزارهای جهت اتصال با انها در Ado.net که در ورژن 2005 است، معرفی شده
مجموعه اول ابزار OdbcConnection
دومی هم معلومه SqlConnection
سومی هم OledbConnection 

تمامی ابزارهای فوق همدیگر رو پشتیبانی میکنند ولی در سرعت انتقال داده ها بین سرور و کلاینت تاثیر میزارد که بهتره از ابزارهای مخصوص هر کدوم استفاده بشه.

----------


## sm

اما من همیشه بانکم SQL هست و از ODBC هم استفاده می کنم... تا الان هم نشده که با مشکل سرعت روبرو باشم یا کاربران گله کنند.
اما خوب چونکه SQL Connection رو ایجاد کردند شاید برتری هایی داشته باشه.
اما فکر کنم برای کارها و کاربران معمولی ODBC مشکلی نداشته باشه.

از بحث اصلی که مشکل دوستمون بود منحرف نشیم!
اگر هم دوستمون خواسته باشند که از oledb  یا SQL Connection استفاده کنند، میتونند برای این منظور از یه فایل متنی یا از رجیستری ویندوز برای تغییرات مربوط به بانک استفاده کنند.

موفق باشید

----------


## solmaz_zm

ممنون از همه دوستان..
من با sql کار می کنم چون خیلی باهاش راحت هستم...به زودی برنامم رو روی شبکه تست میکنم ببینم با ip کار می کنه یه نه...اگه نشد از روش های دیگری که دوستانم معرفی کردن استفاده می کنم..

بازم ممنون

----------


## sm

این روش استفاده از ip موقعی خوبه که شما بدونید ip یا نام سرور چیه!
شما باید امکانی رو درنظر بگیرین که بشه این متغیر رو عوض نمود. درغیر اینصورت باید مرتب کد را ویرایش کنید.

موفق باشید

----------


## reza1357

دوستان همانطور قبلا گفتم این متغییر تمام اجزاء اون رو میتونی با ایجاد یک فایل متنی یا باینری اقدام به تغییر تمام اجزاء ان کنید جالب اینجاست که از همین فایل متنی میتونید قفل نرم افزاری هم بسازید.

----------


## hmm

> این روش استفاده از ip موقعی خوبه که شما بدونید ip یا نام سرور چیه!
> شما باید امکانی رو درنظر بگیرین که بشه این متغیر رو عوض نمود. درغیر اینصورت باید مرتب کد را ویرایش کنید.


در سازمانهای بزرگ معمولا ip سرورهاشون عوض نمیشه بنابراین تقریبا همیشه ثابته
میتونید در برنامه نصاب برنامه ip سرور رو تعریف کنید تا در رجیستری  اضافه بشه و همیشه برنامه از رجیستری مقدار رو بخونه

----------


## nima_8m

سلام

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

کد اتصال به دیتابیس:

        con = New OleDbConnection("provider=microsoft.jet.oledb.4.0 ; data source=" & Application.StartupPath() & "\db.mdb")
        Dim da As New OleDbDataAdapter("select * from t1 order by id asc ", con)
        Dim ds As New DataSet
        Dim ds_seke As New DataSet

----------


## nima_8m

کسی میدونه چطوری میشه یه بانک اطاعاتی اکسس رو روی شبکه به اشتراک گذاشت تا برنامه ها تو شبکه به این بانک متصل شوند؟

----------


## nima_8m

یعنی کسی تا حالا با اکسل برنامه تحت شبکه ننوشته؟!

----------

