<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>VB.Net</title>
        <link>http://geekswithblogs.net/paulschapman/category/8639.aspx</link>
        <description>Techniques and other musings on Visual Basic .Net</description>
        <language>en-GB</language>
        <copyright>paulschapman</copyright>
        <managingEditor>paulschapman@xericsystems.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Implementing a News Aggregator in Silverlight and VB.Net #2 Accessing our database from VB.Net</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2008/09/04/implementing-a-news-aggregator-in-silverlight-and-vb.net-2-accessing.aspx</link>
            <description>&lt;p&gt;In the years since the .Net runtime was first released I've seen a number of ways of accessing a SQL database from within VB.Net (or C#). One person I worked with had a nifty utility which would take any database and generate all the code to access it. It has been on my list of jobs to do to implement my own such tool but like other jobs, such as winning the National Lottery or winning a high stakes poker game I have never got around to it. OK the poker game is something my wife will have to do - she is better at poker than me.&lt;/p&gt;
&lt;p&gt;What I do have is a class which encapsulates the functions I need to execute stored procedures on the database. All my database access is executed by inheriting from the following class;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt;Imports&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt; Microsoft.VisualBasic &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data.SqlClient &lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Xml &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Xml.Linq &lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;MustInherit&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Class&lt;/span&gt; DataEngine &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; _Connection &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlConnection &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; _Command &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlCommand &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; &lt;span style="COLOR: blue"&gt;New&lt;/span&gt;() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Connection = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlConnection() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Command = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlCommand() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; &lt;span style="COLOR: blue"&gt;New&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; ConnectionString &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Connection = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlConnection(ConnectionString) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Command = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlCommand() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Property&lt;/span&gt; ConnectionString &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;String &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; _Connection.ConnectionString &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Set&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; value &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_Connection.ConnectionString = value&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Set &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Property &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; ExecuteStoredProcedure(ProcedureName &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Table &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; _DataTable&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; _DataAdapter&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlDataAdapter &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; _DataSet&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataSet = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; DataSet() &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; _Connection.State = ConnectionState.Closed &lt;span style="COLOR: blue"&gt;Then&lt;/span&gt; &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;_Connection.Open() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;If &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; _Command &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandText = ProcedureName &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandType = CommandType.StoredProcedure &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Connection = _Connection &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_DataAdapter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlDataAdapter(_Command) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_DataAdapter.Fill(_DataSet,Table) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_DataTable = _DataSet.Tables(Table) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Throw&lt;/span&gt; ex &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; _DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; ExecuteStoredProcedure(ProcedureName &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; _Connection.State = ConnectionState.Closed &lt;span style="COLOR: blue"&gt;Then&lt;/span&gt; &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;_Connection.Open() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;If &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; _Command &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandText = ProcedureName &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandType = CommandType.StoredProcedure &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Connection = _Connection&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.ExecuteNonQuery() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;With&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Throw&lt;/span&gt; ex &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Property&lt;/span&gt; Command &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlCommand &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; _Command &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Set&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; value &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlCommand) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_Command = value &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Set &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Property &lt;br /&gt;
&lt;br /&gt;
End&lt;/span&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;&lt;font face="Courier New"&gt;Class &lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
First thing to notice about this class is that it is marked MustInherit you cannot directly create an instance of this class. What you do is create a class which inherits from this class. In this way the common tasks required; which summarised is open a connection to the database and execute stored procedures. There are two types essentially; a stored procedure which returns a table, and one that does not.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The class has two constructors. One that creates the basic database access objects; the connection and the command, and another which allows us to pass a connection string.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Next is a property which exposes the connection string to any child of this class. This is the other means for setting the connection string, although to be honest as a general rule I prefer to do that at the when an instance is created. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;The next two procedures take advantage of overloading, allowing us to pass an optional table name for the results. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Finally the last property allows access to the command object.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;We can use this class to access the database created earlier with the following class;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt;Imports&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt; Microsoft.VisualBasic &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data.SqlClient &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Configuration.ConfigurationManager &lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Class&lt;/span&gt; SimplicitaDatabase &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Inherits&lt;/span&gt; DataEngine &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;New &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;ConnectionString = ConnectionStrings(&lt;span style="COLOR: #a31515"&gt;"SimplicitaDB"&lt;/span&gt;).ConnectionString &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; Register(Name &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;,Address1 &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Address2 &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Town &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, County &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Postcode &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Tel &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;,Fax &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Email &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, WebAddress &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;,Password &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; dt &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; DataTable() &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamName&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Name"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamAddress1&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Address1"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamAddress2&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Address2"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamTown&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Town"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamCounty&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"County"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamPostcode&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Postcode"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamTel&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Telephone"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamFax&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Fax"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamEmail&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Email"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamWebAddr&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"WebAddress"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamPassword&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Password"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;          &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;SqlParamName.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Name &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamAddress1.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Address1 &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamAddress2.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Address2 &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamTown.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Town &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamCounty.Value&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;= County &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamPostcode.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Postcode &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamTel.Value&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;= Tel &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamFax.Value&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;= Fax &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamEmail.Value&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;= Email &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamWebAddr.Value&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;= WebAddress &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamPassword.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Password &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamName) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamAddress1) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamAddress2) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamTown) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamCounty) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamPostcode) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamTel) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamFax) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamEmail) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamWebAddr) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamPassword) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;dt = ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"RegisteredUser.Register"&lt;/span&gt;,&lt;span style="COLOR: #a31515"&gt;"Result"&lt;/span&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Throw&lt;/span&gt; &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; dt &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; RetrieveNewsfeeds &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; dt &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; DataTable &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;dt = ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"NewsAggregator.RetrieveNewsFeeds"&lt;/span&gt;,&lt;span style="COLOR: #a31515"&gt;"NewsFeeds"&lt;/span&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; dt &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; RetrieveLatestStories &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; dt &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;dt = ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"NewsAggregator.RetrieveLatestStories"&lt;/span&gt;,&lt;span style="COLOR: #a31515"&gt;"NewsStories"&lt;/span&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; dt &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; WriteNewsStory ( Title &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Link &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Desc &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Supplier &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamTitle&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Title"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamLink&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Link"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamDesc&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Desc"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamSupplier&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Supplier"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;SqlParamTitle.Value&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;= Title &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;SqlParamLink.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Link &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;SqlParamDesc.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Desc &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;SqlParamSupplier.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Supplier &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamTitle) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamLink) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamDesc) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamSupplier) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"NewsAggregator.WriteNewsStory"&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
End&lt;/span&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;&lt;font face="Courier New"&gt;Class &lt;/font&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
And that is the code for accessing the database created in part one. &lt;br style="mso-special-character: line-break" /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124945"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124945" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/124945.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2008/09/04/implementing-a-news-aggregator-in-silverlight-and-vb.net-2-accessing.aspx</guid>
            <pubDate>Fri, 05 Sep 2008 03:57:15 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/124945.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2008/09/04/implementing-a-news-aggregator-in-silverlight-and-vb.net-2-accessing.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/124945.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/124945.aspx</trackback:ping>
        </item>
        <item>
            <title>Implementing a News Aggregator in Silverlight and VB.Net #1 - Creating SQL Database to store the news details</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2008/09/03/implementing-a-news-aggregator-in-silverlight-and-vb.net-1.aspx</link>
            <description>&lt;p&gt;&lt;font color="#333333"&gt;For one of my projects I need to have Business News headlines displayed on the front page, to give me greater control as to which headlines and from which feeds I use I'm going to have the aggregator call each feed and store the article details in a SQL database.&lt;/font&gt;&lt;/p&gt;
&lt;h3&gt;&lt;font color="#333333"&gt;Schemas&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font color="#333333"&gt;I'm going to use schemas in designing my database. The use of these changed in SQL 2005 so that each one is a distinct namespace, independent of the user who created it. This will allow me to group related tables together, but it also allows you to use the same table name for different items. For example in an accounts system you have Sales accounts and Purchase accounts. You could of course create one table called SalesAccount and another called PurchaseAccount. With schemas we create ourselves two schemas one called SalesLedger and one called PurchaseLedger. Each schema has a table called 'Accounts'.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#333333"&gt;So first task is to create the schema that will hold our News. The following line of T/SQL will create our Namespace;&lt;/font&gt;&lt;/p&gt;
&lt;font color="#0000ff"&gt;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;CREATE &lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&lt;font color="#0000ff"&gt;SCHEMA&lt;/font&gt; [NewsAggregator] &lt;font color="#0000ff"&gt;AUTHORIZATION&lt;/font&gt; [dbo] &lt;br /&gt;
GO&lt;/font&gt;&lt;/p&gt;
&lt;h3&gt;&lt;font color="#333333"&gt;Creating our tables&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font color="#333333"&gt;Now we have our schema the next thing is the tables that will store the feeds we are going to read, and the news headlines. Not a lot special in these ones to be honest. We need two tables; one to store the feeds that we will be aggregating and the second to store the headlines. The following T/SQL will create these tables;&lt;/font&gt;&lt;/p&gt;
&lt;font color="#0000ff"&gt;&lt;font face="Courier New" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;CREATE TABLE&lt;font size="2"&gt; [NewsAggregator]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font size="2"&gt;[NewsStories]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;( &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Id] [bigint] &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;IDENTITY&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Title] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;127&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Link] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;max&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Desc] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;max&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Supplier] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;20&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [DateAdded] [datetime] &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL&lt;/font&gt;&lt;font size="2"&gt; &lt;br /&gt;
                       &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;CONSTRAINT&lt;/font&gt;&lt;font size="2"&gt; [DF_NewsStories_DateAdded] &lt;br /&gt;
                       &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;DEFAULT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;getdate&lt;/font&gt;&lt;font color="#808080" size="2"&gt;()) &lt;br /&gt;
             )&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ON&lt;/font&gt;&lt;font size="2"&gt; [PRIMARY]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;CREATE &lt;font color="#0000ff" size="2"&gt;TABLE&lt;/font&gt;&lt;font size="2"&gt; [NewsAggregator]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font size="2"&gt;[NewsFeeds]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;( &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Id] [bigint] &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;IDENTITY&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Link] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;max&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Supplier] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;30&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Weight] [smallint] &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL &lt;br /&gt;
             )&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ON&lt;/font&gt;&lt;font size="2"&gt; [PRIMARY]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333" size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#333333" size="2"&gt;So there is our two tables. I have added a 'weight' field to the table of feeds. How this works will be clear later, however it is here to allow us to control how many articles from each feed we are displaying.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333" size="2"&gt;Now when developing I like to keep things separated. For this reason I like to do all my database access via Stored Procedure. The practical upshot of this is that any differences in the dialect of SQL you are using should be hidden behind the stored procedure making it a lot easier to covert the whole thing to another database.&lt;/font&gt;&lt;/p&gt;
&lt;h3&gt;&lt;font face="Arial" color="#333333" size="2"&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;font size="2"&gt;
&lt;h3&gt;&lt;font face="Arial" color="#333333"&gt;Stored Procedures&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333"&gt;Our feeds are retrieved by making a call to RetrieveNewsFeeds. Taking note of the fact that I am using a schema called NewsAggregator the code to create this stored procedure is as follows;&lt;/font&gt;&lt;/p&gt;
&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#333333"&gt;&lt;font color="#0000ff"&gt;CREATE PROCEDURE&lt;font size="2"&gt; [NewsAggregator]&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;[RetrieveNewsFeeds] &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;AS &lt;br /&gt;
BEGIN &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;SET&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;NOCOUNT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;ON&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;; &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;     SELECT&lt;/font&gt;&lt;font size="2"&gt; Id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;br /&gt;
            Link&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; &lt;br /&gt;
            Supplier &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;     FROM&lt;/font&gt;&lt;font size="2"&gt;   NewsAggregator&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;NewsFeeds &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;END&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333"&gt;This simply returns the results of select statement. I'm not interested in the order so to speed things along no sorting is done. Next having retrieved our news feeds we need to have a means of writing the headlines to our database;&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial" color="#333333"&gt;
&lt;div&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;PROCEDURE&lt;/span&gt; [NewsAggregator]&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[WriteNewsStory] &lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Title&lt;span style="mso-tab-count: 2"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;127&lt;span style="COLOR: gray"&gt;), &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Link&lt;span style="mso-tab-count: 2"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;), &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Desc&lt;span style="mso-tab-count: 2"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;), &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Supplier&lt;span style="mso-tab-count: 1"&gt;   &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;20&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;AS &lt;br /&gt;
BEGIN &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Declare&lt;/span&gt; @StoryCount &lt;span style="COLOR: blue"&gt;BigInt &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SET&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NOCOUNT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt;&lt;span style="COLOR: gray"&gt;; &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Set&lt;/span&gt; @StoryCount &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;Select&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;Count&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Counter &lt;span style="COLOR: blue"&gt;From&lt;/span&gt; NewsAggregator&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;NewsStories &lt;br /&gt;
&lt;span style="mso-tab-count: 6"&gt;                         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Where&lt;/span&gt; Link &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; @Link&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; @StoryCount &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 0 &lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Begin &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;INTO&lt;/span&gt; NewsAggregator&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;NewsStories &lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Title&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Link&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [Desc]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Supplier&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Title&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;@Link&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;@Desc&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;@Supplier&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;END &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
This is fairly simple as a stored procedure. We first look for the story link in the database to see if it has been read before. If not then the story gets added to the database.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Now we have our feed suppliers, and we can write the stories to our database. The final stored procedure is to recover the files from the database.&lt;/p&gt;
&lt;/div&gt;
&lt;/font&gt;&lt;font face="Arial" color="#333333"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333"&gt;First off the procedure opens up a cursor to access the list of feed suppliers. Normally I would not use a cursor which are notoriously slow in SQL Server but it does provide a simple mechanism for progressing through a table. &lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;CREATE PROCEDURE [NewsAggregator]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;[RetrieveLatestStories] &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;AS &lt;br /&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;BEGIN &lt;br /&gt;
     &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;Declare&lt;/font&gt;&lt;font size="2"&gt; @Supplier &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;30&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;) &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Declare&lt;/font&gt;&lt;font size="2"&gt; @Weight &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;SmallInt &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Declare&lt;/font&gt;&lt;font size="2"&gt; @Result &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;Table &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;     ( &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;          Title &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;127&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;), &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;          Link &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;Max&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;), &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;          [Desc] &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;Max&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;) &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;     )&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     &lt;br /&gt;
     Declare&lt;/font&gt;&lt;font size="2"&gt; FeedSuppliers &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Cursor&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;For &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          SELECT&lt;/font&gt;&lt;font size="2"&gt; Supplier&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;  &lt;br /&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;                 Weight &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          FROM&lt;/font&gt;&lt;font size="2"&gt;   NewsAggregator&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;NewsFeeds &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&lt;br /&gt;
     Open&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; FeedSuppliers &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Fetch&lt;/font&gt;&lt;font size="2"&gt; FeedSuppliers &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Into&lt;/font&gt;&lt;font size="2"&gt; @Supplier&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;@Weight &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     While&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;@@Fetch_Status&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; 0 &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;     Begin &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Insert&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Into&lt;/font&gt;&lt;font size="2"&gt; @Result &lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;Title&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;Link&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;[Desc]&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;) &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Select&lt;/font&gt;&lt;font size="2"&gt;   &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Top&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;@Weight&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt;Title&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;Link&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;[Desc] &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          From&lt;/font&gt;&lt;font size="2"&gt;     NewsAggregator&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;NewsStories &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Where&lt;/font&gt;&lt;font size="2"&gt;    Supplier &lt;/font&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; @Supplier &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Order&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;By&lt;/font&gt;&lt;font size="2"&gt; DateAdded &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;Desc &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Fetch&lt;/font&gt;&lt;font size="2"&gt; FeedSuppliers &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Into&lt;/font&gt;&lt;font size="2"&gt; @Supplier&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;@Weight &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;     End &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&lt;br /&gt;
     Close&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; FeedSuppliers &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;     Deallocate&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; FeedSuppliers &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Select&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;*&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;From&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; @Result &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;END&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
&lt;p&gt; &lt;/p&gt;
&lt;font face="Arial" color="#333333"&gt;While we are moving through the table of suppliers we retrieve from the list of stories the latest for each supplier based on the weight. If the weight is 1 then we retrieve 1 story, 2 and 2 stories 3, 3 stories etc. This weight places a bias in the display of stories allowing us to control the stories from each supplier.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#333333" size="2"&gt;and the following will store the news headlines&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124914"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124914" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/124914.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2008/09/03/implementing-a-news-aggregator-in-silverlight-and-vb.net-1.aspx</guid>
            <pubDate>Thu, 04 Sep 2008 03:48:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/124914.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2008/09/03/implementing-a-news-aggregator-in-silverlight-and-vb.net-1.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/124914.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/124914.aspx</trackback:ping>
        </item>
    </channel>
</rss>