рдкрд░рд┐рдЪрдп
рдЕрдХреНрд╕рд░, рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрдЕрдк рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕реАрдзреЗ рдирд╛рдоApp.exe.config рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдХрдХреНрд╖рд╛рдПрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЬрд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЦрд░реЛрдВрдЪ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореИрдВ VS2010 рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдВрдбреЛ рдкрд╕рдВрдж рд╣реИ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ):

рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрд╕ рдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░реЗрдВ?
рдЗрд╕ рд╕рдВрд╡рд╛рдж рдлреЙрд░реНрдо рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реБрд▓рдн SQL рд╕рд░реНрд╡рд░ рдФрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдиреАрдЪреЗ рдЙрддрд░ рд░рд╣рд╛ рд╣реИ
рдереЛрдбрд╝рд╛ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдо Microsoft рдбреЗрдЯрд╛ рдХрдиреЗрдХреНрд╢рди рдбрд╛рдпрд▓реЙрдЧ
(рдЬреЛ рд╕реЛрдЪрд╛ рд╣реЛрдЧрд╛?) рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдареАрдХ рд╣реИ, рд╣рдо рдПрдХ рдФрд░ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдмрд┐рддрд╛рддреЗ рд╣реИрдВ рдФрд░ рдПрдордПрд╕рдбреАрдПрди рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдореЗрдВ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП
рд╕реНрд░реЛрдд рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдкрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдФрд░ рд╕реБрд▓рдн рд╡рд░реНрдгрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЬрд╛рд░реА рд░рдЦреЗрдВред
Hooking
рд╣рдо рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдХреЛ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдХреНрд▓рд╛рдЗрдВрдЯ Profie
рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛! ), рдлрд╛рд░реНрдо рдкрд░ рдПрдХ рдмрдЯрди рдФрд░ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕ рдлреЗрдВрдХреЛред

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ DataConnectionConfiguration.cs рдФрд░ IDataConnectionConfiguration.cs ... рд╕реЗ msdn рдХреЗ рд╕рд╛рде ConnectionDialog \ Sample \ Project рдлрд╝реЛрд▓реНрдбрд░ред рдкрд╣рд▓рд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЪрдпрдирд┐рдд рдПрдХ (xml рдореЗрдВ рдмрдЪрд╛рддрд╛ рд╣реИ) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдХреНрд░рдорд╢рдГ рд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рджреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: Microsoft.Data.ConnectionUI рдФрд░ Microsoft.Data.ConnectionUI.Dialog, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╝реЛрд▓реНрдбрд░ ... ConnectionDialog \ ConnectionDialogUI \ bin \ Debug (рд░рд┐рд▓реАрдЬрд╝) \ рд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЙрдкрдпреЛрдЧ
рдЕрдм рдХреЛрдб рдкрд░ рдЬрд╛рдПрдВред рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ DataConnectionDialog рд╡рд░реНрдЧ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ ConnectionString рдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдФрд░ рдУрдХреЗ рдмрдЯрди рджрдмрд╛рдХрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдЧрд╛:
private string GetConnectionString() { string connectionString = null; DataConnectionDialog dcd = new DataConnectionDialog(); DataConnectionConfiguration dcs = new DataConnectionConfiguration(null); dcs.LoadConfiguration(dcd); if (DataConnectionDialog.Show(dcd) == DialogResult.OK) connectionString = dcd.ConnectionString; dcs.SaveConfiguration(dcd); return connectionString; }
рдЕрдм рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдЯрди 1 рдмрдЯрди рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдХрд░реЗрдВред
private void button1_Click(object sender, EventArgs e) { textBox1.Text = GetConnectionString(); }
рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдареАрдХ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рда рдмреЙрдХреНрд╕ рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрдЦрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХрдорд╛рддреНрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВ рдорд╣рд╛рди рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдиреЗрдХреНрд╢рдирдпреВрдЖрдИрдбреАрдЕрд▓реЙрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╝реЙрд░реНрдо рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕.resx рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛
рдпрд╣рд╛рдБ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдкрд░рд┐рдпреЛрдЬрдирд╛ VS2010 SP1)ред