PDA

View Full Version : تعریف Connection String در یک برنامه تحت شبکه



larim2007
دوشنبه 24 اردیبهشت 1386, 10:31 صبح
با سلام خدمت دوستان

من در حال نوشتن یک برنامه با #C هستم قرار است این برنامه در یک شبکه که شامل چندین کامپیوتر می باشد اجرا شود حال من به چه طریق connection string را تعریف کنم که همه کامپیوترها به طور مشترک از این دیتابیس استفاده کنند. ضمنا بانک من با
Sql Server 2000 می باشد.

با تشکر

Sorenaa_s
دوشنبه 24 اردیبهشت 1386, 10:51 صبح
workstation id=WORKSTATION_HOST_NAME;packet size=4096;user id=SQL_USER_ID;data source=SQL_SERVER_HOST_NAME;persist security info=True;initial catalog=DATA_BASE_NAME;password=SQL_USER_PASSWORD

Keramatifar
دوشنبه 24 اردیبهشت 1386, 11:50 صبح
دوست عزیز
توی Connection String هیچ ID ای از دستگاه Client وجود نداره بنابراین شما وقتی توی Connection String سرور رو مثلا Station7 تعیین می کنی تمام کامپیوترهای این شبکه بدون مشکل با همون سرور کار می کنن.

larim2007
دوشنبه 24 اردیبهشت 1386, 12:08 عصر
با سلام

لطفا بیشتر توضیح دهید.

با تشکر

Keramatifar
دوشنبه 24 اردیبهشت 1386, 12:34 عصر
در مورد چیش توضیح بدیم؟

houshang.karami
دوشنبه 24 اردیبهشت 1386, 13:47 عصر
با سلام
از این سایت استفاده کن
http://www.connectionstrings.com/
بجای نام serverباید از IP server استفاده کنید

larim2007
دوشنبه 24 اردیبهشت 1386, 16:12 عصر
با سلام

لطفا توضیح بدین که کجا وچطور IP را وارد کنم.

با تشکر

hdv212
دوشنبه 24 اردیبهشت 1386, 20:42 عصر
همانطور که دوست عزیزم houshang.karami گفتن، سایت http://www.connectionstrings.com/
میتونه کمکت کنه، ولی این ConnectionString رو هم به کار ببر، راحت تره :
"Server=Aron1;Database=pubs;User ID=sa;Password=asdasd;Trusted_Connection=False"
trusted connection :
"Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;"
موفق باشید

houshang.karami
سه شنبه 25 اردیبهشت 1386, 07:39 صبح
روی سروری که sqlserver نصب شده :
run->cmd->ipconfig
بعد IP Addressرا بردار

ar.shirazi
سه شنبه 25 اردیبهشت 1386, 08:19 صبح
شما باید کانکشن استرینگ رو توی فایل app.config ذخیره کنید و در موقع نیاز از اون بخونید

این کار باعث میشه با تغییر نام سرور و .... نیاز به کامپایل مجدد نباشه

larim2007
سه شنبه 25 اردیبهشت 1386, 12:38 عصر
با سلاملطفا در مورد فایل App.config و چگونگی ذخیره connection String در آن بیشتر توضیح دهید. و آیا این فایل به طور اتوماتیک در win application ایجاد می شود یا باید به پروژه اضافه شود.با تشکر

Mojtaba_ss
سه شنبه 25 اردیبهشت 1386, 13:45 عصر
اگه AddNewItem کنی میتونی اونو به برنامت اضافه کنی.
روال کار اینطوریه که تو تگ <appSettings> یه key (دلخواه) تعریف می کنی و تو قسمت value مربوط به key که تعریف کردی ConnectionString خودتو می نویسی.
برای خوندن این key باید System.Configuration رو به برنامت AddReference کنی.
کد مربوط به خوندن key (مثلا یه key به نام name تعریف کردی که تو value واسش نوشتی Mojtaba):
string strName=System.configuration.ConfigurationManager. AppSettings["name"];
strName حاوی Mojtaba میشه.
به همین ترتیب میتونی یه key مثلا به نام ConnectionString تعریف کنی و تو قسمت value کلیدت Connectionstring خودتو ست کنی.
موفق باشی!!!

larim2007
سه شنبه 25 اردیبهشت 1386, 15:56 عصر
با سلام

لطفا اگر امکان دارد با ضمیمه کردن یک مثال طریقه ساخت این فایل (app.config) و چگونگی کاربرد آن را در کد برنامه نشان دهید.

با تشکر

Mojtaba_ss
سه شنبه 25 اردیبهشت 1386, 16:48 عصر
دوست عزیز امروز از شانس بد سیستمم همرام نیست.
مثالشو فردا برات میزارم.

larim2007
سه شنبه 25 اردیبهشت 1386, 21:27 عصر
آقا دستت درد نکنه مثالو حتما بذار . خیلی بهش احتیاج دارم.

با تشکر

Mojtaba_ss
چهارشنبه 26 اردیبهشت 1386, 07:53 صبح
سلام
برای اضافه کردنApp.config --> : باید AddNewItem کنی و Application Configuration File رو انتخاب کنی،ضمنا System.Configuration رو به برنامت AddReference کن.
داخل App.Config :



<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="Name" value="Mojtaba Sahraei"/>
</appSettings>
</configuration>



حالا برای خوندن کلید Name و گرفتن value که برابر Mojtaba Sahraei:



string strName = System.Configuration.ConfigurationManager.AppSetti ngs["Name"];



حالا خودت میتونی یه کلید برای کانکشن استرینگت تعریف کنی و داخل value رشته اتصال به بانکت رو بنویسی و با دستور بالا نام کلیدت رو صدا بزنی و رشته اتصالت رو دریافت کنی.
مثلا اگه کلیدی بنام ConnectionString تعریف کردی و رشته اتصال خودتو توش نوشتی اینطوری میتونی خاصیت ConnectionString شی Connection خودتو ست کنی:



System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection();
con.ConnectionString = System.Configuration.ConfigurationManager.AppSetti ngs["ConnectionString"];



موفق باشی.

larim2007
چهارشنبه 26 اردیبهشت 1386, 10:02 صبح
با سلام

من با 2003 Visual Studio کار می کنم و وقتی برنامه را اجرا می کنم این خطا را میدهد.

The type or namespace name 'ConfigurationManager' does not exist in the class or namespace 'System.Configuration' (are you missing an assembly reference?)

در net 2003. این refrence وجود ندارد تا من به پروژه ام اضافه کنم. لطفا راهنمایی کنید.

با تشکر

Mojtaba_ss
چهارشنبه 26 اردیبهشت 1386, 10:14 صبح
دوست عزیز App.config تو 2005 اضافه شده.
برای 2003 طبق گفته دوستان میتونی یه متغیر public تعریف کنی و رشته اتصال خودتو توی اون قرار بدی.
موفق باشی.

مهدی رحیم زاده
چهارشنبه 26 اردیبهشت 1386, 12:28 عصر
حالا برای تغییر ip روی هرکدوم از کامپیوتر ها بدون استفاده از debug مجدد باید چکار کرد ؟؟؟
یعنی چطوری باید مقدار اون کلید که تعریف کردیم رو عوض کنیم تا این تغییر روی برنامه exe ما هم اعمال بشه ....

hdv212
چهارشنبه 26 اردیبهشت 1386, 13:34 عصر
من بارها نحوه ی ذخیره ی متغیر ها در app.config رو گفتم، به این صفحه نگاه کنید، البته در نسخه ی 2005 کاربرد داره :
http://barnamenevis.org/forum/showthread.php?t=67959

mohebbi.saeed
پنج شنبه 27 اردیبهشت 1386, 20:12 عصر
همان چیزی که دوست من گفت شما می توانید در app.config یک Value و یک Key تعریف کنید سپس هر جا در برنامه خواستید وقتی با قطعه کد زیر خواستید آن را صدا بزنید خوبیش این است که شمت می توانید بدون کامپیال این کار رو بکنید و می توانید با Nodpad ان را باز کرده و ConnectionString خودتون را عوض کنید خواندن این گونه عمل می کنیدSqlCOnnection cnn = new SqlConnection ( System.Configuration.ConfigurationManager.AppSetti ng["NaeKey"]فقط باید Configuration را به Refrence هاتون اضافه کنید

iman_s52
دوشنبه 22 مرداد 1386, 07:52 صبح
خوب این روشی که شما میگین درست ولی در مورد ConnectionString که خودش تویه دیتا ست میذاره اونو چیکارش میشه کرد. یعنی باید اون هم به همین روش عوض کرد ؟؟
global::test.Properties.Settings.Default._1386Conn ectionString;

iman_s52
دوشنبه 22 مرداد 1386, 13:16 عصر
میشه یکی منو راهنمایی کنه ؟؟

sm_ezadpanah
دوشنبه 22 مرداد 1386, 13:21 عصر
برای این کار کافیه شما serverرو مساوی نام سرور بر رو شبکه بدی که بانکت رو همون سروره کار خاص دیگه ایی نیست

iman_s52
دوشنبه 22 مرداد 1386, 13:38 عصر
اینو چکارش کنم ؟؟؟
global::test.Properties.Settings.Default._1386Conn ectionString;

behzadk
دوشنبه 22 مرداد 1386, 17:40 عصر
می تونی به جای ipserver سرور از نام سرور هم استفاده کنی

iman_s52
دوشنبه 22 مرداد 1386, 18:28 عصر
آخه قرار نیست که این برنامه چند جا اجرا بشه نمیشه که واسه هر جا من اسم یا ip اونو بگیرم و واسشون Exe بسازم.
من سوالم اینه که اگه از App.config استفاده کنم موردی نداره که من این خط رو عوض کنم :

this._connection.ConnectionString = global::test.Properties.Settings.Default._1386Conn ectionString;

این خط مربوط به دیتا ست که خودش ساخته

PC2st
دوشنبه 22 مرداد 1386, 20:23 عصر
لازم نیست اون خط رو عوض کنی؟ کافیه که از طریق برنامه، Setting رو عوض کنی.
مثلا مقدار Settings.Default._1386Conn ectionString رو عوض کن. بعدش اون خطی که در پست قبلی نوشته بودی، اون خودش connection string جدید رو میگیره. یعنی قبل از اون خط باید Settings.Default._1386ConnectionString رو عوض کنی، مثلا به شکل زیر:


Properties.Settings.Default._1386ConnectionString = "your connection string";

iman_s52
سه شنبه 23 مرداد 1386, 07:46 صبح
اینجوری که نمیشه چون ReadOnly.
چون تو Scope مربوط به Application. و نمیشه .
چکار کنم‌؟؟؟؟

iman_s52
سه شنبه 23 مرداد 1386, 17:50 عصر
چیکارش میشه کرد ؟؟؟

ali_mp64
جمعه 27 اردیبهشت 1387, 23:23 عصر
سلام دوستان
من از connectionstring زير استفاده كردم .


public string strconn = "Data Source=192.168.1.2;Initial Catalog=test;User Id=ali;Password=2244";


اما error زير رو ميده
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

فكر مي كنين مشكل از كجاست ؟

bachebahal_1363
چهارشنبه 29 خرداد 1387, 22:07 عصر
بنده جستجوهای زیادی کردم اما به نتیجه ای درباره تغییر connectionString در app.config نرسیدم.
از دوستان عزیز در این باره خواهشمندم یه راهنمائی کوچیک بهما بکنند
برای مثال من یک DataSet از یک بانک اطلاعاتی ایجاد کرده ام که مسلماً این DataSet با استفاده از ConnectionString فایل دیتابیسی که از روی اون ایجاد شده لود می شه . حال من این برنامه رو به صورت Client/server نصب میکنم ، خوب اون DataSet به چه صورت می تونه از ConnectionString جدید ما استفاده کنه و اصلا چطور می شه ConnectionString قبلی که ایجاد شده رو با تغییر یوزر و کلاینت / سرور تغییر داد ؟

top7news
چهارشنبه 29 خرداد 1387, 22:52 عصر
جستجو در همه چیز امریست بسیار نیکو که از زمان پیامبران گذشته تا به حال ما به این کار سفارش شده ایم ، از لینک زیر شاید به جواب سئوالتون برسین :
http://barnamenevis.org/forum/showthread.php?t=110427

bachebahal_1363
پنج شنبه 30 خرداد 1387, 11:36 صبح
جستجو در همه چیز امریست بسیار نیکو که از زمان پیامبران گذشته تا به حال ما به این کار سفارش شده ایم ، از لینک زیر شاید به جواب سئوالتون برسین :
http://barnamenevis.org/forum/showthread.php?t=110427

ممنون از راهنماییتون
اما من این تاپیکی که شما آدرسشو برام گذاشتین رو دیدم
اونجا هم دقیقا گفته از طریق app.config گفته انجام بدید . خوب من تمامی روش ها فوق رو می دونم و با اونهانیز کار کردم اما در پست قبلیم گفتم برای مثال یک datasetدارم که به صورت ویزار ایجاد شده خود زمانی که نشه از این dataset در جای دیگه استفاده کرد به چه درد می خوره مگر ااینکه connectionstring که این dataset از اون استفاده می کنه بازسازی بشه و اگر به صورت server/client باشه connectionString مورد نظر براش set بشه .

top7news
پنج شنبه 30 خرداد 1387, 13:50 عصر
خوب چرا dataset رو به صورت run time نمیسازی
همون موقعی که بهش نیاز داری و هر جا که لازمه
همون لحظه ایجادش کن و بعد با این connection که داری تنظیمش کن و بعد استفاده کن

bachebahal_1363
پنج شنبه 30 خرداد 1387, 22:37 عصر
خوب چرا dataset رو به صورت run time نمیسازی
همون موقعی که بهش نیاز داری و هر جا که لازمه
همون لحظه ایجادش کن و بعد با این connection که داری تنظیمش کن و بعد استفاده کن

پیشنهاد شما کاملا درسته اما من می خوام بدونم با توجه به اینکه در VisualStudio امکان ایجاد dataSet به صورت ویزارد گنجانده شده ولی با تغییر بانک و یا مسیر فایل هیچ کاری نمیشه کرد ، علت این کار چیه و راه حل دیگه ای وجود داره که ConnectionString رو به صورت دستی و یا با تغییر بانک توسط کاربر وارد کرد .

top7news
جمعه 31 خرداد 1387, 01:01 صبح
این امکان صد در صد وجود داره ، راستش چه طورش رو به طور دقیق نمیدونم ولی باید چیزی شبیه به کنترل پنل برای کاربران بشه تعریف کرد که توی اون connectin string قابل تعییر و تعریف مجدد باشه
اگه از اساتید کسی در این زمینه راهنمایی کنه ، ممنون میشم.

migrant
شنبه 01 تیر 1387, 23:58 عصر
سلام
چطور میشه این connection string رو در فایلی جدا تعریف کرد تا با تغییر نام سرور هیچ مشکلی با تغییرش نداشته باشیم ؟؟؟؟
ممنون

top7news
یک شنبه 02 تیر 1387, 00:06 صبح
سلام
کتاب "مرجع کاربردی برنامه نویسان C#.net" انتشارات ناقوس صفحه 24 مثال 15 دقیقا همچین برنامه ای رو قرار داده ، اگه وقت کردم حتما برنامه اش رو می نویسم و اینجا میذارم که همه استفاده کنند (میبخشید که الان این کارو نکردم در گیر امتحانای دانشگاهم)