PDA

View Full Version : سوال: تغییر connection string دیتاست



saeedeh119
جمعه 11 اسفند 1391, 09:27 صبح
من برنامه م تحت شبکه اجرا میشه وconnection string رو از یه فایل متنی میخونم که اطلاعات اون فایل متنی میتونه تغییر کنه.برای همه عملیات یه کانکشن به بانک میزنم ومثلا درج انجام میدم.در این مورد مشکلی نیست.اما تمام دیتا گرید ها وکمبو باکس های فرمهام به یک دیتاست بایند شدن.که تحت شبکه نمی تونن به اون دیتاست وصل بشن چون کانکشن دیتاست local هست.چطوری میتونم کاری کنم که دیتاست هم کانکشن استرینگش رو از فایل متنی بخونه.امیدوارم منظورم رو رسونده باشم

amir.hasani
شنبه 14 اردیبهشت 1392, 07:37 صبح
سلام دوست عزیز،شما راهی پیدا کردی؟چون دقیقا من هم همین مشکل رو دارم!

Rezahak
شنبه 14 اردیبهشت 1392, 07:45 صبح
کل اون رویه هایی که مربوط به خواندن و باز کردن فایل حاوی connection string می شه رو داخل یک dll در یک پروژه دیگر قرار بده و کامپایل کن بعد از آن dll در برنامه ات استفاده کن

amir.hasani
شنبه 14 اردیبهشت 1392, 09:42 صبح
مشکل خوندن کانکشن استرینگ که ندارم،راحت فایل خونده میشه و ارتباط برقرار میشه،ولی توی دیتاست چکارکنم؟چون دیتاست رو به صورت ویزارد ایجاد میکنه نمیتونم کانکشن استرینگ رو به اون هم اعمال کنم و تغییر بدمش.امیدوارم منظورم رو متوجه شده باشین

کامبیز اسدزاده
شنبه 14 اردیبهشت 1392, 09:59 صبح
من برنامه م تحت شبکه اجرا میشه وconnection string رو از یه فایل متنی میخونم که اطلاعات اون فایل متنی میتونه تغییر کنه.برای همه عملیات یه کانکشن به بانک میزنم ومثلا درج انجام میدم.در این مورد مشکلی نیست.اما تمام دیتا گرید ها وکمبو باکس های فرمهام به یک دیتاست بایند شدن.که تحت شبکه نمی تونن به اون دیتاست وصل بشن چون کانکشن دیتاست local هست.چطوری میتونم کاری کنم که دیتاست هم کانکشن استرینگش رو از فایل متنی بخونه.امیدوارم منظورم رو رسونده باشم

دوست عزیز یکم گنگ توضیح دادین...

آیا منظور شما اینه که نمیتونید به دیتابیس در داخل شبکه دسترسی پیدا کنید یا منظورتون دسترسی به فایل کانفیگی هست که تایین کردین ؟

amir.hasani
شنبه 14 اردیبهشت 1392, 10:45 صبح
دوست عزیز یکم گنگ توضیح دادین...

آیا منظور شما اینه که نمیتونید به دیتابیس در داخل شبکه دسترسی پیدا کنید یا منظورتون دسترسی به فایل کانفیگی هست که تایین کردین ؟

نه دوست عزیز،بزار یکبار هم من بگم
من تو برنامم کانکشن استرینگ رو از روی یک فایل متنی میخونم و هیچ مشکلی نیست،یعنی با اون کانکشن استرینگی که خوندم میتونم به سرور شبکه وصل بشم و تبادل اطلاعات کنم و همه چیز عالی کار میکنه
فقط مشکل از جایی شروع میشه که میخوایم داخل فرممون از datagrideview استفاده کنیم،چون برای استفاده از datagraidview مجبوریم از dataset استفاده کنیم،و چون دیتاست کانکشن استرینگ رو به صورت ویزارد میسازه بنابراین نمیتونیم از اون کانکشن استرینگی که از روی فایل خوندیم استفاده کنیم
حالا دو راه داریم
1- راهی برای تغییر آدرس دیتاست پیدا کنیم
2- از datagrideviwe بدون استفاده از دیتاست استفاده کنیم (البته اگر ممکن باشه)
حالا شما چه راهی رو پیشنهاد میدین؟
ممنون

کامبیز اسدزاده
شنبه 14 اردیبهشت 1392, 11:36 صبح
آخ آخ‌ آخ ... دوست من شما از حالت Wizard برای برنامه ای که قراره تحت شبکه اطلاعات رو ردو بدل کنه استفاده کردین ! این استاندارد و اصولی نیست برای مدیریت و کار با دیتابیس به صورت سفارشی باید کلاس های مربوط به این موارد رو بنویسید.

دقیقا میدونم شما چی میگید مشکلتون چیه ولی من پیشنهاد نمیکنم از حالت Wizard استفاده کنید در آینده توسعه و مدیریت سیستمون با مشکل مواجه خواهد شد... باز هم اگه دوستان راهی در رابطه با رفع مشکل شما دارند اعلام نمایند ولی حرف من یادتون نرده تا دیر نشده رو کد نویسی تمرکز کنید نه Wizard :)

amir.hasani
شنبه 14 اردیبهشت 1392, 11:49 صبح
آخ آخ‌ آخ ... دوست من شما از حالت Wizard برای برنامه ای که قراره تحت شبکه اطلاعات رو ردو بدل کنه استفاده کردین ! این استاندارد و اصولی نیست برای مدیریت و کار با دیتابیس به صورت سفارشی باید کلاس های مربوط به این موارد رو بنویسید.

دقیقا میدونم شما چی میگید مشکلتون چیه ولی من پیشنهاد نمیکنم از حالت Wizard استفاده کنید در آینده توسعه و مدیریت سیستمون با مشکل مواجه خواهد شد... باز هم اگه دوستان راهی در رابطه با رفع مشکل شما دارند اعلام نمایند ولی حرف من یادتون نرده تا دیر نشده رو کد نویسی تمرکز کنید نه Wizard :)
ممنونم که راهنمایی میکنید
بله خودم هم میدونم یه جای کار میلنگه ولی نمیدونم چکار کنم.
چجوری بدون ویزارد دیتاست ایجاد کنم؟
یه راه حلی یه پیشنهادی چیزی!شما استارت رو بزن من گازش رو میگیرم!:لبخندساده:

کامبیز اسدزاده
شنبه 14 اردیبهشت 1392, 13:28 عصر
خب دوست من مرحله اول اینه که شما باید یک تعداد توابع و کلاس هایی رو بنویسید تا در پروژتون ازش استفاده کنید:

برای اینکه آشنا بشید با این نوع سبک در همین انجمن ها جستجو بزنید ارتباط با دیتابیس / استفاده از دیتابیس و ...

من نمیخوام از ۰ تا ۱۰۰ براتون آموزشش رو بدم اونقت نمیتونید درک کنید ترجیح میدم مثال بهتون بدم و در صورت داشتن مشکل راهنماییتون کنم.

برای شروع کار این نمونه مثال ها رو ببینید :

ساده ترین روش که ۲ تا کار انجام میده (۱.اتصال به دیتابیس / ۲.نوشتن در دیتاببیس / خواندن اطلاعات و ...)

http://www.codeproject.com/Articles/1155/Simple-ADO-NET-Database-Read-Insert-Update-and-Del

این : http://stackoverflow.com/questions/15578758/insert-delete-and-update-in-c-sharp-using-database

و این : http://lamahashim.blogspot.co.uk/2010/04/c-read-insert-update-delete-from-sql.html

سعی کنید پروژه کوچیکی با این روش ایجاد و تمرین کنید در نهایت بعد اینکه کامل شرابط کاری و قواعد رو درک کردین راحت میتونید به جای حالت Wizard از این روشی که اصولی هست استفاده کنید.

سوالی بود بپرسی.

amir.hasani
شنبه 14 اردیبهشت 1392, 16:55 عصر
دوست عزیز خیلی ممنونم که با حوصله راهنمایی میکنید
اما یک موضوعی که پیش اومد اینه که من در ارتباط با پایگاه داده مشکلی ندارم
برنامه ای که نوشتم الان چند ماهه که داره برای کاربرش کارمیکنه و مشکلی پیش نیومده ولی حالا کاربر درخواست آپدیتی کرده که مجبور میشم از دیتاست استفاده کنم،اما لینک هایی که شما گذاشتید تا جایی که متوجه شدم از دیتاست استفاده نکرده و فقط جداول بانک رو میخونه و ادیت میکنه،الان مشکل من فقط ساختن دیتاست بدون ویزارده
ممنون که در همین مورد راهنمایی کنید
بازم به خاطر کمک های بدون چشم داشتتون ممنونم:قلب:

amir.hasani
یک شنبه 15 اردیبهشت 1392, 12:14 عصر
همچنان منتظریم!:خجالت:

کامبیز اسدزاده
یک شنبه 15 اردیبهشت 1392, 14:23 عصر
نه !!! اشتباه فکر نکنید !!! با این تصور شما اصلا به نمونه های من نگاهی نکردین !!!

مثلا در مثال اول :‌


//Attributes public const string DB_CONN_STRING = "Driver={Microsoft Access Driver (*.mdb)}; "+ "DBQ=D:\\CS\\TestDbReadWrite\\SimpleTest.mdb";


این چیه پس ؟ دیتابیس دیگه :)

شما باید به مشکل بر بخورید دلیلش اینه که شما از WiZard استفاده کردین و هیچ موقع نمیتونید بعد از Compile طوری که دوست دارید با دیتابیس و بروز رسانی های مورد نظرتون کنار بیایید.

مثال هایی که من دادم ادیت میکنه ولی چیرو ؟ دیتابیسی رو ادیت و ویراش میکنه که بهش وصله مگه میشه بدون منبعی چیزی رو درخواست کرد یا در اون نوشت و یا چیزیرو حذف کرد !!!

مثال هایی رو که دادم خط به خط بررسی کنید. ابتدا من خودم در اون اوایل از حالت های Wizard استفاده میکردم ولی بعد اینکه با مشکلاتی مثل مشکلات شما مواجه شدم تا بیام از حالت کد نویسی استفاده کنم تا درکش کنم پدرم در اومد دلیلشم اینه که در حالت Wizard تمامی توابع و عملیات لازم از دید شما مخفی هستند.

amir.hasani
یک شنبه 15 اردیبهشت 1392, 18:02 عصر
نه !!! اشتباه فکر نکنید !!! با این تصور شما اصلا به نمونه های من نگاهی نکردین !!!

مثلا در مثال اول :‌


//Attributes public const string DB_CONN_STRING = "Driver={Microsoft Access Driver (*.mdb)}; "+ "DBQ=D:\\CS\\TestDbReadWrite\\SimpleTest.mdb";


این چیه پس ؟ دیتابیس دیگه :)

شما باید به مشکل بر بخورید دلیلش اینه که شما از WiZard استفاده کردین و هیچ موقع نمیتونید بعد از Compile طوری که دوست دارید با دیتابیس و بروز رسانی های مورد نظرتون کنار بیایید.

مثال هایی که من دادم ادیت میکنه ولی چیرو ؟ دیتابیسی رو ادیت و ویراش میکنه که بهش وصله مگه میشه بدون منبعی چیزی رو درخواست کرد یا در اون نوشت و یا چیزیرو حذف کرد !!!

مثال هایی رو که دادم خط به خط بررسی کنید. ابتدا من خودم در اون اوایل از حالت های Wizard استفاده میکردم ولی بعد اینکه با مشکلاتی مثل مشکلات شما مواجه شدم تا بیام از حالت کد نویسی استفاده کنم تا درکش کنم پدرم در اومد دلیلشم اینه که در حالت Wizard تمامی توابع و عملیات لازم از دید شما مخفی هستند.
دوست عزیز نمیدونم من اینقدر بیسوادم که منظور شما رو نمیفهمم و یا شما منظور من رو درک نکردید
من با دیتابیس مشکلی ندارم،یعنی تو شبکه به سرور وصل شدم و با sqlserver ارتباط برقرار کردم و تو بانکی که داخلش ایجاد کردم میتونم بنویسم و ازش بخونم و ادیت کنم ،من هیچ مشکلی با این قضیه ندارم(همگی بدون ویزارد)
مشکل من دیتاسته (dataset) نمیدونم بدون ویزارد چجوری یه دیتاست بسازم،دقت کنید عنوان تاپیک هم تغییر کانکشن استرینگ دیتاسته
ممنون

کامبیز اسدزاده
یک شنبه 15 اردیبهشت 1392, 18:18 عصر
خب ...دوست من لازم نیست عصبانی بشید ! نه شما بیی سوادی و نه من نفهم ! یک مثال ساده ...


// Create a DataSet and put both tables in it.
DataSet set = new DataSet("office");
set.Tables.Add(table1);
set.Tables.Add(table2);

موفق باشید.

Rezahak
یک شنبه 15 اردیبهشت 1392, 18:19 عصر
دوست عزیز شما نباید اینقدر خودت رو دست کم بگیری همین قدر که چیزی رو که نمی دونی داری می پرسی یعنی شجاعت داری
در مورد مشکلتون هم باید بگم شما می تونی dataset رو به صورت unbound تعریف کنی البته کارتون یک مقدار زیاد می شه چون باید تغییرات ساختار و نحوه به روزرسانی اطلاعات رو خودتون با برنامه نویسی کنترل کنی ولی در عوض مستقل از تغییرات پایگاه داده منبع خواهد بود .

amir.hasani
یک شنبه 15 اردیبهشت 1392, 18:36 عصر
[
خب ...دوست من لازم نیست عصبانی بشید ! نه شما بیی سوادی و نه من نفهم ! یک مثال ساده ...


// Create a DataSet and put both tables in it.
DataSet set = new DataSet("office");
set.Tables.Add(table1);
set.Tables.Add(table2);
موفق باشید.

من خیلی بیجا بکنم که بخوام به شما بگم نفهم:ناراحت:،لطفا من رو شرمنده نکنید
من طلبی از کسی ندارم اگه شما به من کمک میکنید از بزرگواریتونه هیچ کس نمیتونه شمارو مجبور به این کار بکنه،

[

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

از شما هم ممنونم
اشکالی نداره چه بهتر که بشه همه کارها رو با برنامه نویسی انجام داد
اگر منبعی چیزی در این مورد دارید ممنون میشم راهنمایی بفرمایید
این دقیقا همون چیزیه که من میخوام:لبخندساده:

amir.hasani
دوشنبه 16 اردیبهشت 1392, 11:10 صبح
دوستان همچنان منتظریم ها!!! فکر نکنم کار زیاد سختی باشه ولی نمیدونم چرا چیزی درموردش نمیتونم پیدا کنم!امیدم به شماهاست:افسرده: