<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Nivot Ink - Database</title>
    <link>http://www.nivot.org/</link>
    <description>PowerShell, SharePoint, WCF, WWF, .NET, ASP.NET, Enterprise Computing and babble from Microsoft MVP Oisin Grehan.</description>
    <language>en-us</language>
    <copyright>Oisin Grehan</copyright>
    <lastBuildDate>Thu, 10 Jul 2008 00:18:44 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>oising@gmail.com</managingEditor>
    <webMaster>oising@gmail.com</webMaster>
    <item>
      <trackback:ping>http://www.nivot.org/Trackback.aspx?guid=c4439da9-a64c-459f-9376-b7f629fa2130</trackback:ping>
      <pingback:server>http://www.nivot.org/pingback.aspx</pingback:server>
      <pingback:target>http://www.nivot.org/PermaLink,guid,c4439da9-a64c-459f-9376-b7f629fa2130.aspx</pingback:target>
      <dc:creator>Oisin Grehan</dc:creator>
      <wfw:comment>http://www.nivot.org/CommentView,guid,c4439da9-a64c-459f-9376-b7f629fa2130.aspx</wfw:comment>
      <wfw:commentRss>http://www.nivot.org/SyndicationService.asmx/GetEntryCommentsRss?guid=c4439da9-a64c-459f-9376-b7f629fa2130</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just hacked this one up a few minutes ago to let me get an Oracle, Access, Excel/CSV
or SQL Server database connection quickly without fiddling with provider strings and
other things that just fall out of my head as fast as they get put in. It uses an
old trick of creating a zero-length file with an UDL extension and then executing
it. The function returns an operable OleDbConnection object, albeit a closed one unless
you specifiy –Open as a switch.
</p>
        <!-- Stylesheet link -->
        <link href="http://www.thecomplex.plus.com/styles/SyntaxHighlighter.css" type="text/css" rel="stylesheet" />
        <!-- Code -->
        <div class="dp-highlighter" id="hlDiv">
          <div class="bar">
          </div>
          <ol class="dp-rb">
            <li class="alt">
              <span>
                <span class="keyword">function</span>
                <span> get-oledbconnection ([</span>
                <span class="keyword">switch</span>
                <span>]</span>
                <span class="variable">$Open</span>
                <span>)
{   </span>
              </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="variable">$null</span>
              <span> | set-content
(</span>
              <span class="variable">$udl</span>
              <span> = </span>
              <span class="string">"$([io.path]::GetTempPath())\temp.udl"</span>
              <span>);   </span>
            </li>
            <li class="alt">
              <span>    </span>
              <span class="variable">$psi</span>
              <span> = new-object
Diagnostics.ProcessStartInfo   </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="variable">$psi</span>
              <span>.CreateNoWindow
= </span>
              <span class="variable">$true</span>
              <span>  </span>
            </li>
            <li class="alt">
              <span>    </span>
              <span class="variable">$psi</span>
              <span>.UseShellExecute
= </span>
              <span class="variable">$true</span>
              <span>  </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="variable">$psi</span>
              <span>.FileName
= </span>
              <span class="variable">$udl</span>
              <span>  </span>
            </li>
            <li class="alt">
              <span>    </span>
              <span class="variable">$pi</span>
              <span> = [System.Diagnostics.Process]::Start(</span>
              <span class="variable">$psi</span>
              <span>)   </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="variable">$pi</span>
              <span>.WaitForExit()   </span>
            </li>
            <li class="alt">
              <span>    write-host (gc </span>
              <span class="variable">$udl</span>
              <span>)   </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="keyword">if</span>
              <span> (gc </span>
              <span class="variable">$udl</span>
              <span>)
{   </span>
            </li>
            <li class="alt">
              <span>        </span>
              <span class="variable">$conn</span>
              <span> =
new-object data.oledb.oledbconnection (gc </span>
              <span class="variable">$udl</span>
              <span>)[2]   </span>
            </li>
            <li class="">
              <span>        </span>
              <span class="keyword">if</span>
              <span> (</span>
              <span class="variable">$Open</span>
              <span>)
{ </span>
              <span class="variable">$conn</span>
              <span>.Open() }   </span>
            </li>
            <li class="alt">
              <span>    }   </span>
            </li>
            <li class="">
              <span>    </span>
              <span class="variable">$conn</span>
              <span>  </span>
            </li>
            <li class="alt">
              <span>}   </span>
            </li>
          </ol>
        </div>
        <p>
You’ll notice I said OleDbConnection. This means you should pick an OLEDB provider
on the provider page for best (read: working) results. Cancelling returns nothing.
</p>
        <p>
          <a href="http://www.nivot.org/content/binary/WindowsLiveWriter/GetaquickdatabaseconnectionwithaniceGUI_11DB3/image_4.png">
            <img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="587" alt="image" src="http://www.nivot.org/content/binary/WindowsLiveWriter/GetaquickdatabaseconnectionwithaniceGUI_11DB3/image_thumb_1.png" width="570" border="0" />
          </a>
        </p>
        <p>
Ah, how I love the little blue box of typographical terrific-ness.
</p>
        <img width="0" height="0" src="http://www.nivot.org/aggbug.ashx?id=c4439da9-a64c-459f-9376-b7f629fa2130" />
      </body>
      <title>Get a quick database connection with a nice GUI</title>
      <guid isPermaLink="false">http://www.nivot.org/PermaLink,guid,c4439da9-a64c-459f-9376-b7f629fa2130.aspx</guid>
      <link>http://www.nivot.org/2008/07/10/GetAQuickDatabaseConnectionWithANiceGUI.aspx</link>
      <pubDate>Thu, 10 Jul 2008 00:18:44 GMT</pubDate>
      <description>&lt;p&gt;
I just hacked this one up a few minutes ago to let me get an Oracle, Access, Excel/CSV
or SQL Server database connection quickly without fiddling with provider strings and
other things that just fall out of my head as fast as they get put in. It uses an
old trick of creating a zero-length file with an UDL extension and then executing
it. The function returns an operable OleDbConnection object, albeit a closed one unless
you specifiy –Open as a switch.
&lt;/p&gt;
&lt;!-- Stylesheet link --&gt;
&lt;link href="http://www.thecomplex.plus.com/styles/SyntaxHighlighter.css" type="text/css" rel="stylesheet"&gt;
&lt;!-- Code --&gt;
&lt;div class="dp-highlighter" id="hlDiv"&gt;
&lt;div class="bar"&gt;
&lt;/div&gt;
&lt;ol class="dp-rb"&gt;
&lt;li class="alt"&gt;
&lt;span&gt;&lt;span class="keyword"&gt;function&lt;/span&gt;&lt;span&gt; get-oledbconnection ([&lt;/span&gt;&lt;span class="keyword"&gt;switch&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span class="variable"&gt;$Open&lt;/span&gt;&lt;span&gt;)
{&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt; 
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$null&lt;/span&gt;&lt;span&gt; | set-content
(&lt;/span&gt;&lt;span class="variable"&gt;$udl&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span class="string"&gt;"$([io.path]::GetTempPath())\temp.udl"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class="alt"&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$psi&lt;/span&gt;&lt;span&gt; = new-object
Diagnostics.ProcessStartInfo&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$psi&lt;/span&gt;&lt;span&gt;.CreateNoWindow
= &lt;/span&gt;&lt;span class="variable"&gt;$true&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class="alt"&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$psi&lt;/span&gt;&lt;span&gt;.UseShellExecute
= &lt;/span&gt;&lt;span class="variable"&gt;$true&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$psi&lt;/span&gt;&lt;span&gt;.FileName
= &lt;/span&gt;&lt;span class="variable"&gt;$udl&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class="alt"&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$pi&lt;/span&gt;&lt;span&gt; = [System.Diagnostics.Process]::Start(&lt;/span&gt;&lt;span class="variable"&gt;$psi&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$pi&lt;/span&gt;&lt;span&gt;.WaitForExit()&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class="alt"&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-host (gc &lt;/span&gt;&lt;span class="variable"&gt;$udl&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt; (gc &lt;/span&gt;&lt;span class="variable"&gt;$udl&lt;/span&gt;&lt;span&gt;)
{&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class="alt"&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$conn&lt;/span&gt;&lt;span&gt; =
new-object data.oledb.oledbconnection (gc &lt;/span&gt;&lt;span class="variable"&gt;$udl&lt;/span&gt;&lt;span&gt;)[2]&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span class="variable"&gt;$Open&lt;/span&gt;&lt;span&gt;)
{ &lt;/span&gt;&lt;span class="variable"&gt;$conn&lt;/span&gt;&lt;span&gt;.Open() }&amp;nbsp;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class="alt"&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;/span&gt; 
&lt;li class=""&gt;
&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span class="variable"&gt;$conn&lt;/span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&gt; 
&lt;li class="alt"&gt;
&lt;span&gt;}&amp;nbsp;&amp;nbsp; &lt;/span&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;
You’ll notice I said OleDbConnection. This means you should pick an OLEDB provider
on the provider page for best (read: working) results. Cancelling returns nothing.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nivot.org/content/binary/WindowsLiveWriter/GetaquickdatabaseconnectionwithaniceGUI_11DB3/image_4.png"&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="587" alt="image" src="http://www.nivot.org/content/binary/WindowsLiveWriter/GetaquickdatabaseconnectionwithaniceGUI_11DB3/image_thumb_1.png" width="570" border="0"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Ah, how I love the little blue box of typographical terrific-ness.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.nivot.org/aggbug.ashx?id=c4439da9-a64c-459f-9376-b7f629fa2130" /&gt;</description>
      <comments>http://www.nivot.org/CommentView,guid,c4439da9-a64c-459f-9376-b7f629fa2130.aspx</comments>
      <category>.NET</category>
      <category>Database</category>
      <category>Monad</category>
      <category>PowerShell</category>
    </item>
  </channel>
</rss>