PDA

View Full Version : خواندن connection string از یک فایل ini



sa_2008
شنبه 22 خرداد 1389, 22:57 عصر
من تو برنامه از connection string با فرمت استاندارد برای اتصال به پایگاه داده استفاده کردم . حالا میخوام برنامه موقع اتصال به دیتابیس sql2000 ، رشته اتصال رو از یک فایل ini خارج از برنامه بخونه تا بشه اونو هر وقت نیاز شد تنظیم کرد . دوستان اگه کسی نمونه برنامه ای تو این زمینه کار کرده لطف کنه بزاره .

sa_2008
یک شنبه 23 خرداد 1389, 11:08 صبح
دوستان محترم این کد رو پیدا کردم ولی نمیدونم میشه ازش برای این منظور استفاده کرد یا نه؟


using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;

namespace Utils
{
/// <summary>
/// Class to read from INI files. Based loosely on the Delphi class of the same name.
/// </summary>
public class IniFile
{
private string fileName;

/// <summary>
/// Creates a new <see cref="IniFile"/> instance.
/// </summary>
/// <param name="fileName">Name of the INI file.</param>
public IniFile(string fileName)
{
if (!File.Exists(fileName))
throw new FileNotFoundException(fileName + " does not exist", fileName);
this.fileName = fileName;
}

// native methods
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section,
string key, string def, StringBuilder retVal, int size, string filePath);

[DllImport("kernel32")]
private static extern int GetPrivateProfileSection(string section, IntPtr lpReturnedString,
int nSize, string lpFileName);

/// <summary>
/// Reads a string value from the INI file.
/// </summary>
/// <param name="section">Section to read.</param>
/// <param name="key">Key to read.</param>
public string ReadString(string section, string key)
{
const int bufferSize = 255;
StringBuilder temp = new StringBuilder(bufferSize);
GetPrivateProfileString(section, key, "", temp, bufferSize, fileName);
return temp.ToString();
}

/// <summary>
/// Reads a whole section of the INI file.
/// </summary>
/// <param name="section">Section to read.</param>
public string[] ReadSection(string section)
{
const int bufferSize = 2048;

StringBuilder returnedString = new StringBuilder();

IntPtr pReturnedString = Marshal.AllocCoTaskMem(bufferSize);
try
{
int bytesReturned = GetPrivateProfileSection(section, pReturnedString, bufferSize, fileName);

//bytesReturned -1 to remove trailing \0
for (int i = 0; i < bytesReturned-1; i++)
returnedString.Append((char)Marshal.ReadByte(new IntPtr((uint)pReturnedString + (uint)i)));
}
finally
{
Marshal.FreeCoTaskMem(pReturnedString);
}

string sectionData = returnedString.ToString();
return sectionData.Split('\0');
}
}
}

Nima NT
یک شنبه 23 خرداد 1389, 12:03 عصر
ای کاش کد ها رو تو تگ Code قرار میدادین.

bpzone
یک شنبه 23 خرداد 1389, 12:10 عصر
کانکشن مورد نظرت رو در فایلی به اسم Config.ini قرار بده و اون فایل رو کنار فایل اصلی برنامه کپی کن ...
با کلاس زیر می تونی اون اطلاعات ذخیره شده در فایل رو بخونی و هر کجا که خواستی استفاده کنی دوست عزیز



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Manage_Processes
{
class ProcessesRun
{
public string readConnection()
{
string ConnectionString = string.Empty;
string path;

path = Path.GetFullPath(".");
path = path + @"\Config.ini";

try
{
StreamReader sr = new StreamReader(path);
ConnectionString = sr.ReadLine();
}
catch
{
ConnectionString = string.Empty;
}

return ConnectionString;

}
}
}

M.YasPro
یک شنبه 23 خرداد 1389, 12:23 عصر
سلام
چرا می خواید از فایل Ini استفاده کنید ؟
اینجا (http://www.google.com/cse?cx=010277259273172057471:gbud9yj2nhi&q=استفاده+app.config&x=0&y=0&siteurl=barnamenevis.org/forum/showthread.php%3Ft%3D227265)رو ببینید .

sa_2008
دوشنبه 24 خرداد 1389, 14:01 عصر
کانکشن مورد نظرت رو در فایلی به اسم Config.ini قرار بده و اون فایل رو کنار فایل اصلی برنامه کپی کن ...
با کلاس زیر می تونی اون اطلاعات ذخیره شده در فایل رو بخونی و هر کجا که خواستی استفاده کنی دوست عزیز



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Manage_Processes
{
class ProcessesRun
{
public string readConnection()
{
string ConnectionString = string.Empty;
string path;

path = Path.GetFullPath(".");
path = path + @"\Config.ini";

try
{
StreamReader sr = new StreamReader(path);
ConnectionString = sr.ReadLine();
}
catch
{
ConnectionString = string.Empty;
}

return ConnectionString;

}
}
}


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

ASKaffash
دوشنبه 24 خرداد 1389, 14:28 عصر
کانکشن مورد نظرت رو در فایلی به اسم Config.ini قرار بده و اون فایل رو کنار فایل اصلی برنامه کپی کن ...
با کلاس زیر می تونی اون اطلاعات ذخیره شده در فایل رو بخونی و هر کجا که خواستی استفاده کنی دوست عزیز



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Manage_Processes
{
class ProcessesRun
{
public string readConnection()
{
string ConnectionString = string.Empty;
string path;

path = Path.GetFullPath(".");
path = path + @"\Config.ini";

try
{
StreamReader sr = new StreamReader(path);
ConnectionString = sr.ReadLine();
}
catch
{
ConnectionString = string.Empty;
}

return ConnectionString;

}
}
}


سلام
بعد امنیت ConnectionString چه می شود؟

bpzone
دوشنبه 24 خرداد 1389, 14:49 عصر
سلام
بعد امنیت ConnectionString چه می شود؟

با سلام
من خودم کانکشن مورد نظر رو رمز گزاری می کنم و بهد در فایل قرار می دم و زمانی که اطلاعات فایل رو بازیابی می کنم، از حالت رمز خارج می کنم، برای همین امنیت اتصال به پایگاه داده رو تامین می کنم
کار اشتباهی انجام میدم :افسرده:

ASKaffash
دوشنبه 24 خرداد 1389, 15:23 عصر
سلام
اگر رمز نگاری می کنی خوب امنیت خوبی دارد(البته لگوریتم هم موثراست) ولی کاربر با یک UI این تعامل را انجام میدهد وشما نگهداری می کنید یا خودتان دستی فایل Encrypt شده را قرار میدهید ؟

bpzone
دوشنبه 24 خرداد 1389, 16:09 عصر
یک برنامه کمکی دارم که اطلاعات پایگاه داده رو داخل اون وارد می کنم و بعد اون برنامه فایل Config.ini رو برام درست می کنه.

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

sa_2008
سه شنبه 25 خرداد 1389, 11:03 صبح
مشکل هنوز حل نشد .کسی نمونه برنامه نداره ؟ طوریکه تنظیمات رو بشه از داخل فایل ini انجام داد.تنظیماتی مثل نام سرور ، کاربر و رمز و تایم اوت و....

bpzone
سه شنبه 25 خرداد 1389, 13:29 عصر
دوست عزیز
تمام اطلاعات رو میتونید توی فایل بریزید و زمانی که برنامه لود میشه و می خواهید ConnectionString رو بسازید ، از اون اطلاعات استفاده کنید