<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[טיפ: שינוי ConnectionString של TypedDataSet בזמן ריצה]]></title><description><![CDATA[<p dir="rtl">מישהו שאל אותי על זה, וכיון שזה שימושי חשבתי לכתוב כאן לתועלת הכלל<br />
(בדיוק לאחרונה נזקקתי לכך ולקח לי זמן למצוא איך עושים את זה).</p>
<p dir="auto">[size=150:vf9pa0ji]<strong>[u:vf9pa0ji]רקע[/u:vf9pa0ji]</strong>[/size:vf9pa0ji]<br />
כשאנו יוצרים בVisualStudio דטה סט חדש ע"י האשף (Add Data Source), הוא שואל אותנו האם לשמור את הConnectionString כ"הגדרה" או לקודד אותה כפי שהיא במחלקות שנוצרות. בהסבר שם באנגלית הם מנדבים מידע נוסף: אם שומרים את הConnectionString כהגדרה, קל אח"כ לשנות אותה במקרה של נתיב משתנה בהפצת התוכנה.</p>
<p dir="rtl">אז כמובן שאני בוחר תמיד באפשרות ה"טובה" ואני שומר את הקונקשיין כהגדרה. אולם כעת נשאלת השאלה, איך משנים את ההגדרה "בקלות" כפי שהובטח?<br />
אז זה ברור שאם ניכנס לApp.Config הצמוד לאפליקציה ונשנה ידנית את הנתיב אז זה ישתנה אבל זה לא נקרא קל, וגם בזמן ריצה זה כבר לא משנה מה שנשנה שם!</p>
<p dir="auto">[size=150:vf9pa0ji]<strong>[u:vf9pa0ji]פיתרון 1 : במידה ורוצים לשנות מידי פעם (לא קבוע) הConnectionString מכאן ולהבא ולשמור את השינוי להפעלה הבאה[/u:vf9pa0ji]</strong>[/size:vf9pa0ji]<br />
הנה הקוד, הוא משנה את ההגדרה של הקונקשיין סטרינג הספציפי:</p>
<pre><code>var config =  ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["השם של הקונקשיין שלנו"].ConnectionString = "Data Source=blah;Initial Catalog=blah;UID=blah;password=blah";
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
</code></pre>
<p dir="rtl">הקוד הזה מצריך Referance + Using ל System.Configuration.<br />
שימו לב, פיתרון זה הוא מסורבל ומיותר למקרה שבאופן קבוע אנו רוצים לבחור את מקור הנתונים בזמן ריצה.<br />
לשם כך הפיתרון השני.</p>
<p dir="auto">[size=150:vf9pa0ji]<strong>[u:vf9pa0ji]פיתרון 2 : כשרוצים שהConnectionString ייקבע בזמן ריצה לפי פרמטר כל שהוא[/u:vf9pa0ji]</strong>[/size:vf9pa0ji]<br />
במקרה כזה, בשעת יצירת הדטה סט אפשר לבחור שלא ישמור את הConnectionString כהגדרה כי ממילא לא יעשה בה שימוש.</p>
<p dir="rtl">ממש פשוט: אחרי כל יצירת דטה אדפטר יש ליצור לו קונקשן סטירנג. ככה לדוגמא:</p>
<pre><code>var NewDa = new XxxxDataSetTableAdapters.XxxxTableAdapter();
NewDa.Connection = getConnection();
</code></pre>
<p dir="rtl">כאשר הפונקציה getConnection נראית מעין זו:</p>
<pre><code>System.Data.SqlClient.SqlConnection getConnection()
{
    if (true) //כאן בחינה/ברירה מה הקונקשיין המתאים
    {
        return new System.Data.SqlClient.SqlConnection("...");
    }
    else
    {
        return new System.Data.SqlClient.SqlConnection("...");
    }
}
</code></pre>
<p dir="rtl">זה רק הדגמה, בפועל עדיף להציב את הקונקשנים במשתנים/מאפיינים ולא ליצור אותם שוב ושוב.</p>
<p dir="rtl"><em>פורסם במקור בפורום CODE613 ב09/09/2013 16:15 (+03:00)</em></p>
]]></description><link>https://tchumim.com/topic/166/טיפ-שינוי-connectionstring-של-typeddataset-בזמן-ריצה</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 06:50:49 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/166.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jan 2018 10:33:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to טיפ: שינוי ConnectionString של TypedDataSet בזמן ריצה on Mon, 29 Jan 2018 10:33:33 GMT]]></title><description><![CDATA[<p dir="rtl">תודה!<br />
עזרת מאוד</p>
<p dir="rtl"><em>פורסם במקור בפורום CODE613 ב16/09/2013 09:12 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/918</link><guid isPermaLink="true">https://tchumim.com/post/918</guid><dc:creator><![CDATA[שמואל]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:33 GMT</pubDate></item></channel></rss>