PDA

View Full Version : سوال: ADOConnection And Allow Saving Password



Alyas_Tet
دوشنبه 13 خرداد 1387, 11:31 صبح
سلام
وقتی از ADOConnection برای ارتباط با اس کیو ال استفاده میکنید یه ویزاردی در دلفی داره که در تب Connection شما میتونید در قسمت Allow Saving Password با گذاشتن تیک اجازه ذخیره پسورد رو میدید . من معمولا ConnectionString رو در Run Time ست میکنم میخوام بدونم که چطور در زمان اجرای برنامه من میتونم این مقدار رو یعنی Allow Saving Password رو برابر True قرار بدم .
در کل مشکل من اینه که من ConnectionString رو در یک فایل ini ذخیره میکنم ولی پسورد ذخیره نمیشه و در اجرای بعدی برنامه باز هم عمل ارتباط درست انجام نمیشه .

Touska
دوشنبه 13 خرداد 1387, 11:56 صبح
با سلام

شما چرا از فایل های Udl خودش استفاده نمی کنید و از Ini استفاده می کنید آن مشکلتونم حل میشه.

مثالش بصورت Runtime (http://www.delphi3000.com/articles/article_1725.asp?SK=)

Alyas_Tet
دوشنبه 13 خرداد 1387, 12:11 عصر
من مشکلی با فایل Ini ندارم . ببینید در خود ویزارد ADOConnection هم که نگاه کنید در زمان تنظیم کردن اطلاعات اگر شما تیک Allow Saving Password رو نزارید در ConnectionString هم پسورد رو نمیاره به همین دلیل هر بار باید این پسورد رو وارد کنید ولی زمانی که این تیک رو میزارم دیگه پسورد هم در ConnectionString قرار میگیره و مشکل حل میشه . حالا همین مشکل رو من در Run Time دارم من چون نمیتونم این Allow Saving Password رو در زمان اجرای برنامه تنظیم کنم به همین دلیل نمیتونم پسورد رو ذخیره کنم و حالا در اجرای برنامه مشکل پیدا میکنم . من میخوام در Run Time این خاصیت Allow Saving Password رو هم True کنم که پسورد رو هم ذخیره کنم تا مشکل حل بشه . ممنون از راهنمائی هاتون .

Touska
دوشنبه 13 خرداد 1387, 12:16 عصر
منم براتون توضیح دادم که برای این کاری می خواهید انجام دهید باید از فایل udl استفاده نمایید.

فایل udl پسورد شما رو بصورت Encrypt ذخیره میکنه در خودش.

و اگر خواستید پسوندشو عوض کنید به ini

اصلا چه احتیاجی به تیک خوردن آن دارید خودتون تو Ini تون گلمه رمز رو Encrypt کنید و در کد AdoConnection.Open ازش استفاده کنید.

اصغر (پآچ)
دوشنبه 13 خرداد 1387, 13:02 عصر
سلام دوست من

شما برای رفع این مشکلت می تونی خاصیت LoginPrompt رو از عنصر ADOConnection به False تغییر بدی یا قبل از اینکه ADOConnection خودت رو اکتیو کنی از دستور ;ADOConnection.LoginPrompt := False استفاده کنی.

موفق و موید باشی

Alyas_Tet
دوشنبه 13 خرداد 1387, 13:17 عصر
منم براتون توضیح دادم که برای این کاری می خواهید انجام دهید باید از فایل udl استفاده نمایید.

فایل udl پسورد شما رو بصورت Encrypt ذخیره میکنه در خودش.
ممنون از جوابتون . من نمیدونم که این فایل udl کجا ذخیره میشه و یا چطور میشه اون رو خوند و یا تغییر داد . ممنون میشم اگر بیشتر توضیح بدید .

اصغر (پآچ)
دوشنبه 13 خرداد 1387, 13:22 عصر
از اون روشی که گفتم استفاده کردی؟ به جواب رسیدی؟ یا نه؟

Touska
دوشنبه 13 خرداد 1387, 17:18 عصر
طریقه ساخت UDl و استفاده شو هم قبلا لینک دادم :

http://msdn.microsoft.com/en-us/library/e38h511e(VS.71).aspx

http://msdn.microsoft.com/en-us/library/aa745362.aspx

Alyas_Tet
سه شنبه 14 خرداد 1387, 10:22 صبح
از اون روشی که گفتم استفاده کردی؟ به جواب رسیدی؟ یا نه؟
نه مشکل چیز دیگه ای دوست عزیز . با False کردن LoginPrompt مشکل حل نمیشه . ممنون از توجهت .
مشکل با راهنمائی Touska حل شد .

اصغر (پآچ)
چهارشنبه 15 خرداد 1387, 10:33 صبح
نه مشکل چیز دیگه ای دوست عزیز . با False کردن LoginPrompt مشکل حل نمیشه . ممنون از توجهت .
مشکل با راهنمائی Touska حل شد .

سلام
این چه کاریه که بخوای ConnectionString خودت رو توی یه فایل ذخیره کنی؟
خوب می تونی به صورت Runtime خودت مقدار دهیش کنی و با همون روشی که گفتم هم مشکلت حل میشه و نیازی نیست که دنبال روش تیک زدن Allo Saving Password باشی.

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


User := GetRegStringValue('\Software\YourProgram\', 'User', HKEY_CLASSES_ROOT);
Password := GetRegStringValue('\Software\YourProgram\', 'Password', HKEY_CLASSES_ROOT);
DNS := GetRegStringValue('\Software\YourProgram\', 'DNS', HKEY_CLASSES_ROOT);
ADOConnection.ConnectionString := 'Provider=SQLOLEDB.1;Password=' + Password + ';Persist Security Info=True;User ID=' + User + ';Initial Catalog=YourProgram;Data Source=' + DNS;


من خودم توی از این روش استفاده می کنم و هیچ وقت هم به مشکل بر نخوردم تا الآن.نوشته های قرمز هم اسم دیتا بیس مورد استفاده در برنامه ات است می تونی اون رو هم توی ریجستری ذخیره کنی که اگه خواستی بتونی از یک دیتا بیس با نام دیگه هم استفاده کنی! نوشته رنگ سبز کار همون تیک Allow Saving Password رو انجام میده!

به همین راحتی و به همین خوشمزگی!:خجالت:

موفق و موید باشی