<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>C# Help &#187; Data Access</title>
	<atom:link href="http://www.csharphelp.com/category/articles/adonet_data/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.csharphelp.com</link>
	<description>C# Tutorial and Guides</description>
	<lastBuildDate>Tue, 07 Feb 2012 01:03:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Master Data Services &#8211; MDS in SQL Server 2008 R2</title>
		<link>http://www.sql-server-performance.com/articles/dba/master_data_services_mds_overview_p1.aspx</link>
		<comments>http://www.sql-server-performance.com/articles/dba/master_data_services_mds_overview_p1.aspx#comments</comments>
		<pubDate>Sat, 06 Mar 2010 18:29:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com/?p=2227</guid>
		<description><![CDATA[Master Data Services (MDS) is a component in SQL 2008 R2 that  allows storing of Master Data in a central repository called the Master Data Services Database.]]></description>
			<content:encoded><![CDATA[<p>Master Data Services (MDS) is a component in SQL 2008 R2 that  allows storing of Master Data in a central repository called the Master Data Services Database.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sql-server-performance.com/articles/dba/master_data_services_mds_overview_p1.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server 2008 R2 Multi-server Administration</title>
		<link>http://www.sql-server-performance.com/articles/dba/multi_server_administration_p1.aspx</link>
		<comments>http://www.sql-server-performance.com/articles/dba/multi_server_administration_p1.aspx#comments</comments>
		<pubDate>Mon, 22 Feb 2010 18:27:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com/?p=2226</guid>
		<description><![CDATA[One of the most useful new features of SQL 2008 R2 for DBA’s is the ability to manage and administer multiple instances of SQL Server from a central location using the new SQL Server Utility tool.]]></description>
			<content:encoded><![CDATA[<p>One of the most useful new features of SQL 2008 R2 for DBA’s is the ability to manage and administer multiple instances of SQL Server from a central location using the new SQL Server Utility tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sql-server-performance.com/articles/dba/multi_server_administration_p1.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server Security Audit (Part 3) &#8211; Operating System Level Audit</title>
		<link>http://www.sql-server-performance.com/articles/audit/security_audit_operating_system_p1.aspx</link>
		<comments>http://www.sql-server-performance.com/articles/audit/security_audit_operating_system_p1.aspx#comments</comments>
		<pubDate>Wed, 23 Dec 2009 00:21:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com/?p=1921</guid>
		<description><![CDATA[An essential part of auditing SQL Server is ensuring the Operating System the SQL Server isntance runs on is secure. [SQL-Server-Performance.com]]]></description>
			<content:encoded><![CDATA[<p>An essential part of auditing SQL Server is ensuring the Operating System the SQL Server isntance runs on is secure. [SQL-Server-Performance.com] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sql-server-performance.com/articles/audit/security_audit_operating_system_p1.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server Security Audit (Part 2) &#8211; Database Level Audit</title>
		<link>http://www.sql-server-performance.com/articles/dba/security_audit_database_level_p1.aspx</link>
		<comments>http://www.sql-server-performance.com/articles/dba/security_audit_database_level_p1.aspx#comments</comments>
		<pubDate>Wed, 23 Dec 2009 00:20:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com/?p=1919</guid>
		<description><![CDATA[The series on securing SQL Server looks at securing the actual database. [SQL-Server-Performance.com]]]></description>
			<content:encoded><![CDATA[<p>The series on securing SQL Server looks at securing the actual database. [SQL-Server-Performance.com] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sql-server-performance.com/articles/dba/security_audit_database_level_p1.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server Security Audit (Part 1) &#8211; Server Level Audit</title>
		<link>http://www.sql-server-performance.com/articles/audit/security_audit_server_level_p1.aspx</link>
		<comments>http://www.sql-server-performance.com/articles/audit/security_audit_server_level_p1.aspx#comments</comments>
		<pubDate>Wed, 23 Dec 2009 00:19:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com/?p=1917</guid>
		<description><![CDATA[Although security is a major component of database administration, it is sometimes overlooked in favour of convenience. As a developer, you need to know how vulnerable your SQL Servers are before you can start securing them. To get this answer, you will first need to conduct a “security audit”. This audit should give you a [...]]]></description>
			<content:encoded><![CDATA[<p><span lang="EN-AU">Although security is a major component of database administration, it is sometimes overlooked in favour of convenience. As a developer, you need to know how vulnerable your SQL Servers are before you can start securing them. To get this answer, you will first need to conduct a “security audit”. This audit should give you a baseline picture and help you find potential loopholes. Once you have the report and management approval, you can start locking down where necessary. </span>[SQL-Server-Performance.com] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.sql-server-performance.com/articles/audit/security_audit_server_level_p1.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auditing In SQL Server 2008</title>
		<link>http://www.sql-server-performance.com/articles/audit/2008_audit_intro_p1.aspx</link>
		<comments>http://www.sql-server-performance.com/articles/audit/2008_audit_intro_p1.aspx#comments</comments>
		<pubDate>Wed, 23 Dec 2009 00:00:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com/?p=1911</guid>
		<description><![CDATA[Auditing is the monitoring and recording all user actions on a database. You can base auditing on individual actions, such as database backup, change of user logins, insert etc. or on combination of factors. [SQL-Server-Performance.com] Though auditing has become a popular buzzword, many DBAs and developers still do not appreciate the requirement for auditing. Properly [...]]]></description>
			<content:encoded><![CDATA[<p>Auditing is the monitoring and recording all user actions on a database. You can base auditing on individual actions, such as database backup, change of user logins, insert etc. or on combination of factors. [SQL-Server-Performance.com]</p>
<p>Though auditing has become a popular buzzword, many DBAs and developers still do not appreciate the requirement for auditing. Properly implemented, auditing can achieve the below:</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sql-server-performance.com/articles/audit/2008_audit_intro_p1.aspx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Base Independent Data Access Layer</title>
		<link>http://www.csharphelp.com/2007/09/data-base-independent-data-access-layer/</link>
		<comments>http://www.csharphelp.com/2007/09/data-base-independent-data-access-layer/#comments</comments>
		<pubDate>Sat, 29 Sep 2007 04:01:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[DAL]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com.php5-3.dfw1-2.websitetestlink.com/?p=681</guid>
		<description><![CDATA[Introduction In this Article I want to describe you how we can approach a data base free data layer. It doesn&#39;t mean that we will not use anydatabase, but we will try to incorporate any data source with our datalayer. This kind of problem happen when we are not sure about eitherdata source/Database will be [...]]]></description>
			<content:encoded><![CDATA[<p><span class="smallblack"><b>Introduction</b></span></p>
<p><span class="smallblack">In this Article I want to describe you how we can approach a data base free data layer.</span></p>
<p><span class="smallblack">It doesn&#39;t mean that we will not use anydatabase, but we will try to incorporate any data source with our datalayer. This kind of problem happen when we are not sure about eitherdata source/Database will be Oracle, SQLServer, Access, etc.</span></p>
<p><span class="smallblack">An advantage having with this approach is when data source changes there is no single line change in our database layer.</span></p>
<p><span class="smallblack"> <b>Scope</b></span></p>
<p><span class="smallblack">C#, VB.NET, Visual Basic, Java (Both Desktop and web)</span></p>
<p><span class="smallblack"> <b>Implementation of Data Access Layer</b></span></p>
<p><span class="smallblack">Let me describe whatever approaches I havetried to solve this problem. First I thought I have to use Interfacelevel communication rather than implementation as we were doing inpast.</span></p>
<p><span class="smallblack">Rather than using Sqlconnection, Oledbconnection, SqlCommand, OledbCommand etc.</span></p>
<p><span class="smallblack">For connection<br />- DbConnection.<br />For Command<br />- IDbCommand.</span></p>
<p><span class="smallblack"> One problem solves of specific connection andcommand objects. Another problem is how I should tell my data accesslayer to retrieve parameter for stored procedure. Because if I write inthe code then our problem is remain we have to modify the data accesslayer after any data source changes.</span></p>
<p><span class="smallblack">Then I have to introduce a file which can be modified on runtime and then ready to another data source.</span></p>
<p><span class="smallblack">I introduced an Xml file for this.</span></p>
<p><span class="smallestblack"><span class="smallblack">&lt;objectMapping type=&quot;ForTestAuthentication&quot;&gt;<br />&lt;!&#8211;table name&#8211;&gt;<br /> &lt;operation name=&quot;DbInsert&quot; fname=&quot;tested&quot;&gt;<br /> &lt;!&#8211;operation name&#8211;&gt;<br /> &lt;command name=&quot;LoginCheck&quot; spnumber=&quot;0&quot;&gt;<br /> &lt;!&#8211;stored procedure name&#8211;&gt;<br /> &lt;parameterMappings&gt;<br /> &lt;parameter name=&quot;@username&quot; member=&quot;aspnet_Users&quot; type=&quot;varchar&quot; length=&quot;50&quot; direction=&quot;input&quot;/&gt;<br />&lt;/parameterMappings&gt;<br />&lt;/objectMapping&gt;<br /></span>
<p><span class="smallblack"><b>Class Diagram</b></span></p>
<p><span class="smallblack"><img src="http://www.csharphelp.com/archives4/files/archive706/image002.gif" alt="" /></span></p>
<p><span class="smallblack"><b>Class Code</b></span></p>
<p><span class="smallblack">For Generic connection and command I use factory method to get the generic connection irrespective of any data source.</span></p>
<p>&nbsp;</p>
<p><span class="smallestblack"><span class="smallblack">private static IDbConnection GetConnectionFromFactory(string strDBProvider, string strDBConnectionString, IDbConnection objIdbConnection)<br /> {<br /> switch (strDBProvider)<br /> {<br /> case _SQLSERVER:<br /> {<br /> objIdbConnection = new SqlConnection(strDBConnectionString);<br /> break;<br /> }<br /> case _ORACLE:<br /> {<br /> objIdbConnection = new OleDbConnection(strDBConnectionString);<br /> break;<br /> }<br /> case _OTHER:<br /> {<br /> objIdbConnection = new OleDbConnection(strDBConnectionString);<br /> break;<br /> }<br /> }<br /> return objIdbConnection;<br /> }<br /></span>
<p><span class="smallblack">Similarly for I have to apply this generic theme to all of my ADO.net objects.</span></p>
<p><span class="smallestblack"><span class="smallblack">public static IDataParameter[] GetParameter(int parmaterCount)<br /> {<br /> IDataParameter[] idbParamters = null;<br /> if (parmaterCount &gt; 0)<br /> {</p>
<p> switch (/*ConfigurationSettings.AppSettings[&quot;providerName&quot;]*/&quot;sqlserver&quot;)<br /> {<br /> case _SQLSERVER:<br /> {<br /> idbParamters = new SqlParameter[parmaterCount];<br /> break;<br /> }<br /> case _ORACLE:<br /> {<br /> idbParamters = new OleDbParameter[parmaterCount];<br /> break;<br /> }</p>
<p> case _OTHER:<br /> {<br /> idbParamters = new OleDbParameter[parmaterCount];<br /> break;<br /> }<br /> }<br /> }<br /> return idbParamters;<br /> }<br /></span>
<p><span class="smallblack">And same operation with DataCommand Objects.There are some comments on ConfigurationSettings.AppSettings.Because Iwas using this in dll and I cann.t access theConfigurationSettings.AppSettings object. But we can use any way aroundon it. Anyhow this is not our point of discussion here. </span></p>
<p><span class="smallestblack"><span class="smallblack"> public static IDbCommand GetIDBCommand()<br /> {<br /> IDbCommand objIdbComand = null;</p>
<p> switch (/*ConfigurationSettings.AppSettings[&quot;providerName&quot;]*/&quot;sqlserver&quot;)<br /> {<br /> case _SQLSERVER:<br /> {<br /> objIdbComand = new SqlCommand();<br /> break;<br /> }<br /> case _ORACLE:<br /> {<br /> objIdbComand = new OleDbCommand();<br /> break;<br /> }</p>
<p> case _OTHER:<br /> {<br /> objIdbComand = new OleDbCommand();<br /> break;<br /> }<br /> }</p>
<p> return objIdbComand;<br /> }<br /></span>
<p><span class="smallblack">We can pass our stored procedure code andobject value array. We have a utility method through which we canaccess the stored procedure name and it.s collection of parameters.</span></p>
<p><span class="smallblack">There is one thing very strictly follow thatyou have to pass object value array in same sequence of the parameteras you have defined in the stored procedure in the database. Thisstored procedure parameters sequence is also reflecting in theconfigXml file.</span></p>
<p><span class="smallblack"><b>Retrieving stored procedure information form Configuration file</b></span></p>
<p>&nbsp;</p>
<p><span class="smallestblack"><span class="smallblack">XmlNodeList xnlstParamtercollection = xnode.SelectNodes(&quot;parameterMappings/parameter&quot;);</p>
<p> if (xnlstParamtercollection != null &amp;&amp; xnlstParamtercollection.Count &gt; 0)<br /> {<br /> IDBParameter = DataProvider.GetParameter(parameterValues.Length);<br /> int paramcounter = 0;<br /> foreach (XmlNode name in xnlstParamtercollection)<br /> {<br /> IDBParameter[paramcounter] = DataProvider.GetParameterInstance();<br /> IDBParameter[paramcounter].ParameterName = name.SelectNodes(&quot;@name&quot;).Item(0).InnerXml;<br /> IDBParameter[paramcounter].Value = parameterValues[paramcounter];</p>
<p> if (name.SelectNodes(&quot;@direction&quot;).Item(0).InnerXml == DEFAULT_PARATMER_DIRECTION)<br /> IDBParameter[paramcounter].Direction = ParameterDirection.Input;</p>
<p> else<br /> IDBParameter[paramcounter].Direction = ParameterDirection.Output;<br /> objIdbCommand.Parameters.Add(IDBParameter[paramcounter]);</p>
<p> paramcounter++;<br /> }<br /> }<br /></span>
<p><span class="smallblack">There is also possibility that you canretrieve the parameter collection from the SQLServer directly .Butanyway this is working fine. Because here is our main intention isdatabase free DAL. </span></p>
<p><span class="smallblack"><b>Specialized parameter retrieving mechanism for SQLServer</b></span></p>
<p><span class="smallblack">But now consider the scenario when we havespecially data source SQLServer. Then we have to use this functionwhich is not including in my code but you can consider it.</span></p>
<p>&nbsp;</p>
<p><span class="smallestblack"><span class="smallblack">private static SqlParameter[] </p>
<p>DiscoverSpParameterSet(SqlConnection connection, string spName, bool includeReturnValueParameter)<br /> {<br /> if( connection == null ) throw new ArgumentNullException( &quot;connection&quot; );<br /> if( spName == null || spName.Length == 0 ) throw new ArgumentNullException( &quot;spName&quot; );</p>
<p> SqlCommand cmd = new SqlCommand(spName, connection);<br /> cmd.CommandType = CommandType.StoredProcedure;</p>
<p> connection.Open();<br /> SqlCommandBuilder.DeriveParameters(cmd);<br /> connection.Close();</p>
<p> if (!includeReturnValuePa<br />
rameter)<br />
 <br /> {<br /> cmd.Parameters.RemoveAt(0);<br /> }</p>
<p> SqlParameter[] discoveredParameters = new SqlParameter[cmd.Parameters.Count];</p>
<p> cmd.Parameters.CopyTo(discoveredParameters, 0);</p>
<p> // Init the parameters with a DBNull value<br /> foreach (SqlParameter discoveredParameter in discoveredParameters)<br /> {<br /> discoveredParameter.Value = DBNull.Value;<br /> }<br /> return discoveredParameters;<br /> }<br /></span>
<p><span class="smallblack">I will try my best to improve this article innext version because truly speaking this is an idea how we canimplement this Database frees DataAccessLayer. But I am sure when youpeople read it then you can also incorporate your ideas in it or youcan give me suggestion which is very helpful for me.</span></p>
<p><span class="smallblack"><b>Future Development</b></span></p>
<p><span class="smallblack">This bit is pretty much up to you guys, if anyone makes any valid suggestions I&#39;d be more than happy to implement them. </span></p>
<p><span class="smallblack"> <b>History</b></span></p>
<p><span class="smallblack"><a href="http://www.csharphelp.com/archives4/files/archive706/DataAccessFreeLayer.zip">Version 1.0</a> (02 September 2007) &#8211; Initial Release</span></p>
<p><span class="smallblack"> <b>About Nazish Ali Rizvi</b></span></p>
<p><span class="smallblack">Hi, I am Nazish Ali I did my Master of Computer Science from Karachi University.Primary Programming Language is C# .My other hobbies Reading philosophy, poetry.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.csharphelp.com/2007/09/data-base-independent-data-access-layer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatic Sql Server Backup Utility Using sqlserveragent</title>
		<link>http://www.csharphelp.com/2007/09/automatic-sql-server-backup-utility-using-sqlserveragent/</link>
		<comments>http://www.csharphelp.com/2007/09/automatic-sql-server-backup-utility-using-sqlserveragent/#comments</comments>
		<pubDate>Sun, 02 Sep 2007 04:01:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[Backup]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com.php5-3.dfw1-2.websitetestlink.com/?p=654</guid>
		<description><![CDATA[Introduction It is a sample C# (VS2005) application forAutomatic Sql server Backup Utility using sqlserveragent. I have usedSQL-DMO dll. This article will show you how to create a automaticbackup in Sql server 2000. This code should work on any PC use VB.NET and installed SQL Server 2000 (any edition or Client Components for SQL Server [...]]]></description>
			<content:encoded><![CDATA[<p><span class="smallblack"><b>Introduction</b></span></p>
<p><span class="smallblack">It is a sample C# (VS2005) application forAutomatic Sql server Backup Utility using sqlserveragent. I have usedSQL-DMO dll. This article will show you how to create a automaticbackup in Sql server 2000.</span></p>
<p><span class="smallblack">This code should work on any PC use VB.NET and installed SQL Server 2000 (any edition or Client Components for SQL Server 2000. </span></p>
<p><span class="smallblack">SQLDMO (Which installed always bt MS SQL Server 2000 or MS SQL Server Client Tools</span></p>
<p><span class="smallblack">To do:</span></p>
<p><span class="smallblack">1) First Enter Your Sql Server username and password on corresponding Text Box<br />2) Set backup Start date &amp; Backup Time<br />3) After Finishing this then please check manually it will working or not<br />4) Manual working procedure: <br /> 1) Run Sql sever enterprise Manager<br /> 2) Select management Option<br /> 3) Open Sql server agent<br /> 4) Open Jobs window<br /> 5) Check whether job item exist or not<br /> 6) Right click on newly created job item then, we will get one <br /> 7) Popup menu, then select start job<br /> <img src='http://www.csharphelp.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> After finish the job then check folder &quot;D:backup&quot; bkp file created or not<br /></span>
<p><span class="smallblack"><b>Important Functions</b></span></p>
<p><span class="smallblack"><b>Add reference to SQL-DMO dll</b></span></p>
<p><span class="smallblack">You can do this by right clicking the projectin Solution Explorer, then selecting &#39;Add Reference&#39;, COM componentsand the latest version of &quot;Microsoft SQLDMO Object Library&quot;.</span></p>
<p><span class="smallblack"><b>Available Server</b></span></p>
<p>&nbsp;</p>
<p><span class="smallestblack"><span class="smallblack">public void dIsplayServerList(ComboBox cboListName)<br /> {<br /> try<br /> {<br /> SQLDMO.Application oSQLServerDMOApp = new SQLDMO.Application();<br /> Info.informationLayer info = new Info.informationLayer();</p>
<p> SQLDMO.NameList oNameList;<br /> oNameList = oSQLServerDMOApp.ListAvailableSQLServers();<br /> for (int intIndex = 0; intIndex &lt;= oNameList.Count &#8211; 1; intIndex++)<br /> {<br /> if (oNameList.Item(intIndex as object) != null)<br /> {<br /> cboListName.Items.Add(oNameList.Item(intIndex).ToString());<br /> }<br /> }<br /> if (cboListName.Items.Count &gt; 0) cboListName.SelectedIndex = 0;<br /> else cboListName.Text = &quot;(Local)&quot;;<br /> }<br /> catch <br /> {</p>
<p> }</p>
<p>Available databases</p>
<p>public void dIsplayDatabases(ComboBox cboDatabase,Info.informationLayer info)<br /> {<br /> try<br /> {<br /> SQLDMO._SQLServer SQLServer = new SQLDMO.SQLServerClass();</p>
<p> cboDatabase.Items.Clear();<br /> SQLServer.Connect(info.strServerName,info.strLoginName,info.strPwd);<br /> foreach (SQLDMO.Database db in SQLServer.Databases)<br /> {<br /> if (db.Name != null)<br /> cboDatabase.Items.Add(db.Name);<br /> }<br /> cboDatabase.Sorted = true;<br /> if (cboDatabase.Items.Count == 0)cboDatabase.Text = &quot;&lt;no&gt;&quot;;<br /> }<br /> catch (Exception err)<br /> {<br /> info.ErrorMessageDataLayer = err.Message;</p>
<p> }<br /> }</p>
<p>Create Job on Server Agent :</p>
<p>public void CreateJob_Sql(Info.informationLayer info)<br /> {<br /> {<br /> try<br /> {<br /> SQLDMO._SQLServer SQLServer = new SQLDMO.SQLServerClass();<br /> SQLDMO.Job SQLJob = new SQLDMO.Job();<br /> SQLDMO.JobSchedule SQLSchedule = new SQLDMO.JobSchedule();</p>
<p> SQLServer.Connect(info.strServerName, info.strLoginName, info.strPwd);</p>
<p> switch (SQLServer.JobServer.Status)<br /> {<br /> case SQLDMO_SVCSTATUS_TYPE.SQLDMOSvc_Stopped:<br /> SQLServer.JobServer.Start();<br /> SQLServer.JobServer.AutoStart = true;<br /> break;<br /> }</p>
<p> SQLJob.Name = info.strDatabaseName;<br /> SQLJob.Description = &quot;Check and Backup&quot; + info.strDatabaseName;</p>
<p> SQLServer.JobServer.Jobs.Add(SQLJob);<br /> SQLJob.Category = &quot;Database Maintenance&quot;;</p>
<p> SQLDMO.JobStep aJobStep = new SQLDMO.JobStep();</p>
<p> aJobStep.Name = &quot;Step 2: Backup the Database&quot;;<br /> aJobStep.StepID = 1;</p>
<p> aJobStep.DatabaseName = info.strDatabaseName;</p>
<p> aJobStep.SubSystem = &quot;TSQL&quot;;<br /> //&#8212;&#8212;&gt;&gt;&gt; If BackUp Folder is Not Found then create BackUp Folder.</p>
<p> string DirectoryName = &quot;D:BackUp&quot;;<br /> if (Directory.Exists(DirectoryName)==false)<br /> {<br /> System.IO.Directory.CreateDirectory(DirectoryName);<br /> }<br /> //&#8212;&#8212;&gt;&gt;&gt;<br /> string sExt;<br /> sExt=&quot;EXEC master.dbo.xp_sqlmaint &#39;-S &quot; + info.strServerName + &quot; -U &quot; + info.strLoginName + &quot; -P &quot; + <br />info.strPwd + &quot; -D &quot; + info.strDatabaseName + &quot; -CkDB -CkAl -CkCat -BkUpMedia DISK -BkUpDB D:Backup -BkExt BAK -DelBkUps <br />2weeks -BkUpOnlyIfClean -Rpt D:BackupBackDB_Checks.txt&#39;&quot;;<br /> aJobStep.Command = sExt;<br /> aJobStep.OnSuccessAction = SQLDMO_JOBSTEPACTION_TYPE.SQLDMOJobStepAction_QuitWithSuccess;<br /> aJobStep.OnFailAction = SQLDMO_JOBSTEPACTION_TYPE.SQLDMOJobStepAction_QuitWithFailure;<br /> SQLJob.JobSteps.Add(aJobStep);<br /> SQLJob.ApplyToTargetServer(info.strServerName);<br /> aJobStep.DoAlter();<br /> SQLJob.Refresh();<br /> aJobStep.Refresh();</p>
<p> }<br /> catch (Exception Err)<br /> {<br /> info.ErrorMessageDataLayer = Err.Message;<br /> }<br /> }<br /> }<br />&lt;/no&gt;</span>
<p><span class="smallblack">Create Job shedule on server Agent:</span></p>
<p><span class="smallestblack"><span class="smallblack">public void CreateShedule_Sql(Info.informationLayer info)<br /> {<br /> try<br /> {<br /> //it will take bkp every week 2 day<br /> SQLDMO.Job SQLJob = new SQLDMO.Job();</p>
<p> SQLDMO._SQLServer SQLServer = new SQLDMO.SQLServerClass();<br /> SQLDMO.JobSchedule SQLSchedule = new SQLDMO.JobSchedule();</p>
<p> SQLServer.Connect(info.strServerName, info.strLoginName, info.strPwd);<br /> SQLJob = SQLServer.JobServer.Jobs.Item(info.strDatabaseName);</p>
<p> // create a new JobSchedule object<br /> SQLSchedule.Name = &quot;Weekly Backup&quot;;<br /> SQLSchedule.Schedule.FrequencyType = SQLDMO.SQLDMO_FREQUENCY_TYPE.SQLDMOFreq_Weekly;<br /> SQLSchedule.Schedule.FrequencyInterval = 2;<br /> SQLSchedule.Schedule.FrequencyRecurrenceFactor = 2; </p>
<p> // // start on Feb18, 2000 &#8211; at 12.55<br /> SQLSchedule.Schedule.ActiveStartDate = info.intStartDate;<br /> SQLSchedule.Schedule.ActiveStartTimeOfDay = info.intStartTime;<br /> //// this schedule has no end time or end date</p>
<p> SQLSchedule.Schedule.ActiveEndDate = 99991231;<br /> SQLSchedule.Schedule.ActiveEndTimeOfDay = 235959;</p>
<p> //// add the schedule to the Job<br /> SQLJob.BeginAlter();<br /> SQLJob.JobSchedules.Add(SQLSchedule);<br /> SQLJob.DoAlter();<br /> //SQLJob.JobSchedules.Refresh();<br /> info.ErrorMessageDataLayer = &quot;New Sql Job [Databasename= &quot; + info.strDatabaseName + &quot; ]Sucessfully Created. &quot;;<br /> }<br /> catch (Exception err)<br /> {<br /> info.ErrorMessageDataLayer = err.Message;</p>
<p> }<br /> }</p>
<p>Syntax (SQL Server 2000)<br />xp_sqlmaint &#39;switch_string&#39;<br />[<br /> [-S server_name[instance_name]]<br /> [-U login_ID [-P password]]<br /> {<br /> [ -D database_name | -PlanName name | -PlanID guid ]<br /> [-Rpt text_file]<br /> [-To operator_name]<br /> [-HtmlRpt html_file [-DelHtmlRpt &lt;time_period&gt;] ]<br /> [-RmUnusedSpace threshold_percent free_percent]<br /> [-CkDB | -CkDBNoIdx]<br /> [-CkAl | -CkAlNoIdx]<br /> [-CkCat]<br /> [-UpdOptiStats sample_percent]<br /> [-RebldIdx free_space]<br /> [-WriteHistory]<br /> [<br /> {-BkUpDB [backup_path] | -BkUpLog [backup_path] }<br /> {-BkUpMedia<br /> {DISK [ [-DelBkUps &lt;time_period&gt;] <br /> [-CrBkSubDir ] [ -UseDefDir ]<br /> ]<br /> | TAPE<br /> }<br /> }<br /> [-BkUpOnlyIfClean]<br /> [-VrfyBackup]<br /> ]<br /> }<br />]</p>
<p>time_period<br />number[minutes | hours | days | weeks | months]</p>
<p>Syntax (SQL Server 7.0)<br />sqlmaint <br />[-?] |<br />[<br /> [-S server]<br<br />
/> [-U l<br />
ogin_ID [-P password]]<br /> {<br /> [ -D database_name | -PlanName name | -PlanID guid ]<br /> [-Rpt text_file [-DelTxtRpt &lt;time_period&gt;] ]<br /> [-To operator_name]<br /> [-HtmlRpt html_file [-DelHtmlRpt &lt;time_period&gt;] ]<br /> [-RmUnusedSpace threshold_percent free_percent]<br /> [-CkDB | -CkDBNoIdx]<br /> [-CkAl | -CkAlNoIdx]<br /> [-CkTxtAl]<br /> [-CkCat]<br /> [-UpdSts]<br /> [-UpdOptiStats sample_percent]<br /> [-RebldIdx free_space]<br /> [-WriteHistory]<br /> [<br /> {-BkUpDB [backup_path] | -BkUpLog [backup_path] }<br /> {-BkUpMedia<br /> {DISK [ [-DelBkUps &lt;time_period&gt;] <br /> [-CrBkSubDir ] [ -UseDefDir ]<br /> ]<br /> | TAPE<br /> }<br /> }<br /> [-BkUpOnlyIfClean]<br /> [-VrfyBackup]<br /> ]<br /> }<br />]<br />&lt;/time_period&gt;&lt;/time_period&gt;&lt;/time_period&gt;&lt;/time_period&gt;&lt;/time_period&gt;</span>
<p><span class="smallblack">Download <a href="http://www.csharphelp.com/archives4/files/archive674/dbMaintain.zip">dbMaintain.zip</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.csharphelp.com/2007/09/automatic-sql-server-backup-utility-using-sqlserveragent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tdo -Typed Data Object 2.0</title>
		<link>http://www.csharphelp.com/2007/08/tdo-typed-data-object-2-0/</link>
		<comments>http://www.csharphelp.com/2007/08/tdo-typed-data-object-2-0/#comments</comments>
		<pubDate>Sun, 19 Aug 2007 04:01:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com.php5-3.dfw1-2.websitetestlink.com/?p=640</guid>
		<description><![CDATA[Tdo is the acronym of Typed Data Object and ismade up of a NET assembly (Tdo.dll) and a source code generator(TdoCodeGenerator.exe). The source code generator produces a collectionof derived classes (VB.NET/C#.NET) that extends the base classes withinthe Tdo.dll assembly, all under the Object Oriented model.Every generated class has the scope &#34;to represent&#34; an object of [...]]]></description>
			<content:encoded><![CDATA[<p><span class="smallblack">Tdo is the acronym of Typed Data Object and ismade up of a NET assembly (Tdo.dll) and a source code generator(TdoCodeGenerator.exe). The source code generator produces a collectionof derived classes (VB.NET/C#.NET) that extends the base classes withinthe Tdo.dll assembly, all under the Object Oriented model.Every generated class has the scope &quot;to represent&quot; an object of yourSQL database, where object are Tables, Views, Stored Procedures,Functions. According to this model, every table or view, etc, isconsidered as an object itself that shows its attributes and operations(that are properties and methods).That means that the single cell of a table or the single parameter of astored procedure will be seen as object itself. All these classes areenclosed in a hierarchically macro-object as a representation of theentire database &#8211; the TdoHelper class.More ahead we&#39;ll see all the possible operations that we can execute onour database (select, insert, update, delete, stored procedure, etc)that will be called from the present methods within the TdoHelper classobjects.</span></p>
<p><span class="smallblack"><b>Tdo Is Open Source </b></span></p>
<p><span class="smallblack">From this version (2.0), Tdo has become anopen source project and both the source code and the setup package aredownloadable from sourceforge.net at the following web address:http://tdo.sourceforge.net.The setup package installs both the base library Tdo.dll and the sourcecode generator TdoCodeGenerator.exe.To be able to use it it&#39;s recommended to have already installed both MSVisual Studio .NET 2005 and Sql Server 2005 (or EXPRESS/2000/7/MSDE).</span></p>
<p><span class="smallblack"><a href="http://www.csharphelp.com/archives4/files/archive661/tdo.zip">[continued]</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.csharphelp.com/2007/08/tdo-typed-data-object-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sorting Data Tables</title>
		<link>http://www.csharphelp.com/2007/07/sorting-data-tables/</link>
		<comments>http://www.csharphelp.com/2007/07/sorting-data-tables/#comments</comments>
		<pubDate>Sun, 08 Jul 2007 04:01:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[Data Tables]]></category>

		<guid isPermaLink="false">http://www.csharphelp.com.php5-3.dfw1-2.websitetestlink.com/?p=598</guid>
		<description><![CDATA[Here is the simplest way to sort and filter data in a DataTable. Use DataView. Note: This demo connects to an SQL Server anduses the Northwind database. You need to modify the App.config to makethis demo work. Here iss the C# sample. using System;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace SortingDataTables{ /// &#60;summary&#62; /// Summary description for [...]]]></description>
			<content:encoded><![CDATA[<p><span class="smallblack">Here is the simplest way to sort and filter data in a DataTable. Use DataView.</span></p>
<p><span class="smallblack">Note: This demo connects to an SQL Server anduses the Northwind database. You need to modify the App.config to makethis demo work.</span></p>
<p><span class="smallblack">Here iss the C# sample.</span></p>
<p><span class="smallblack"><span class="smallblack">using System;<br />using System.Data;<br />using System.Data.SqlClient;<br />using System.Configuration;</p>
<p>namespace SortingDataTables<br />{<br /> /// &lt;summary&gt;<br /> /// Summary description for Class1.<br /> /// &lt;/summary&gt;<br /> class MainClass<br /> {<br /> /// &lt;summary&gt;<br /> /// The main entry point for the application.<br /> /// &lt;/summary&gt;<br /> [STAThread]<br /> static void Main(string[] args)<br /> {<br /> // declare a dataview and assign it the values from GetEmployeesUnsorted()<br /> DataView dvUnsorted = GetEmployeesUnsorted();<br />Console.WriteLine(&quot;+++++ Unsorted Dataview ++++++&quot;);<br /> //call our print function<br /> PrintToConsole(dvUnsorted,&quot;LastName&quot;); </p>
<p> // declare a dataview and assign it the values from GetEmployeesSorted()<br /> DataView dvSorted = GetEmployeesSorted();<br /> Console.WriteLine(&quot;+++++ Sorted Dataview ++++++&quot;);<br /> //call our print function<br /> PrintToConsole(dvSorted,&quot;LastName&quot;);</p>
<p> // declare a dataview and assign it the values from GetEmployeesWithFilter()<br /> DataView dvFiltered = GetEmployeesWithFilter();<br /> Console.WriteLine(&quot;+++++ Filtered Dataview ++++++&quot;);<br /> //call our print function<br /> PrintToConsole(dvFiltered,&quot;LastName&quot;);</p>
<p> //pause<br /> Console.ReadLine();</p>
<p> }</p>
<p> private static void PrintToConsole(DataView dv, string columnName)<br /> {<br /> //loop thru the dataview<br /> for(int i =0; i &lt; dv.Count; i++)<br /> {<br /> //print the value in index i from the specified column<br /> Console.WriteLine(dv[i][columnName].ToString());<br /> }<br /> }</p>
<p> private static DataView GetEmployeesSorted()<br /> {<br /> //get the connection string from app.config<br /> string connectionString = ConfigurationSettings.AppSettings[&quot;ConnectionString&quot;];<br /> //create a new connection and assign our connection string<br /> SqlConnection sqlConnection = new SqlConnection(connectionString);<br /> //create a new command and pass our sql statement and our connection object.<br /> SqlCommand sqlCommand = new SqlCommand(&quot;Select Lastname from Employees&quot;,sqlConnection);</p>
<p> //open the connection<br /> sqlConnection.Open();</p>
<p> //create a new sqladapter and set its command object with our sqlcommand<br /> SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);<br /> //create a new dataset to hold our data<br /> DataSet ds = new DataSet();<br /> //fill the dataset with the result of our query from the specified command<br /> sqlAdapter.Fill(ds);</p>
<p> //create a new dataview from our table in our dataset at index 0<br /> DataView dv = new DataView(ds.Tables[0]);</p>
<p> //apply a sort<br /> dv.Sort = &quot;Lastname Desc&quot;;</p>
<p> //close our connection<br /> sqlConnection.Close();</p>
<p> //return our dataview<br /> return dv;<br /> }</p>
<p> private static DataView GetEmployeesUnsorted()<br /> {<br /> //get the connection string from app.config<br /> string connectionString = ConfigurationSettings.AppSettings[&quot;ConnectionString&quot;];<br /> //create a new connection and assign our connection string<br /> SqlConnection sqlConnection = new SqlConnection(connectionString);<br /> //create a new command and pass our sql statement and our connection object.<br /> SqlCommand sqlCommand = new SqlCommand(&quot;Select Lastname from Employees&quot;,sqlConnection);</p>
<p> //open the connection<br /> sqlConnection.Open();</p>
<p> //create a new sqladapter and set its command object with our sqlcommand<br /> SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);<br /> //create a new dataset to hold our data<br /> DataSet ds = new DataSet();<br /> //fill the dataset with the result of our query from the specified command<br /> sqlAdapter.Fill(ds);</p>
<p> //create a new dataview from our table in our dataset at index 0<br /> DataView dv = new DataView(ds.Tables[0]);</p>
<p> //close our connection<br /> sqlConnection.Close();</p>
<p> //return our dataview<br /> return dv;</p>
<p> }</p>
<p> private static DataView GetEmployeesWithFilter()<br /> {<br /> //get the connection string from app.config<br /> string connectionString = ConfigurationSettings.AppSettings[&quot;ConnectionString&quot;];<br /> //create a new connection and assign our connection string<br /> SqlConnection sqlConnection = new SqlConnection(connectionString);<br /> //create a new command and pass our sql statement and our connection object.<br /> SqlCommand sqlCommand = new SqlCommand(&quot;Select Lastname from Employees&quot;,sqlConnection);</p>
<p> //open the connection<br /> sqlConnection.Open();</p>
<p> //create a new sqladapter and set its command object with our sqlcommand<br /> SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommand);<br /> //create a new dataset to hold our data<br /> DataSet ds = new DataSet();<br /> //fill the dataset with the result of our query from the specified command<br /> sqlAdapter.Fill(ds);</p>
<p> //create a new dataview from our table in our dataset at index 0<br /> DataView dv = new DataView(ds.Tables[0]);</p>
<p> //apply our row filter. get only records with a lastname of &#39;Callahan&#39;<br /> dv.RowFilter = &quot;LastName = &#39;Callahan&#39;&quot;;</p>
<p> //close our connection<br /> sqlConnection.Close();</p>
<p> //return our dataview<br /> return dv;<br /> }<br /> }<br />}</p>
<p>Here&#39;s the VB.NET sample.</p>
<p>Imports System.Data<br />Imports System.Data.SqlClient<br />Imports System.Configuration</p>
<p>Module MainModule</p>
<p>Sub Main()</p>
<p>&#39; declare a dataview and assign it the values from GetEmployeesUnsorted()<br />Dim dvUnsorted As DataView = GetEmployeesUnsorted()<br />Console.WriteLine(&quot;+++++ Sorted Dataview ++++++&quot;)<br />&#39;call our print function<br />PrintToConsole(dvUnsorted, &quot;LastName&quot;)</p>
<p>&#39; declare a dataview and assign it the values from GetEmployeesSorted()<br />Dim dvSorted As DataView = GetEmployeesSorted()<br />Console.WriteLine(&quot;+++++ Sorted Dataview ++++++&quot;)<br />&#39;call our print function<br />PrintToConsole(dvSorted, &quot;LastName&quot;)</p>
<p>&#39; declare a dataview and assign it the values from GetEmployeesWithFilter()<br />Dim dvFiltered As DataView = GetEmployeesWithFilter()<br />Console.WriteLine(&quot;+++++ Filtered Dataview ++++++&quot;)<br />&#39;call our print function<br />PrintToConsole(dvFiltered, &quot;LastName&quot;)</p>
<p>Console.ReadLine()<br />End Sub</p>
<p>Private Sub PrintToConsole(ByVal dv As DataView, ByVal columnName As String)<br />&#39;loop thru the dataview<br />For i As Integer = 0 To dv.Count &#8211; 1<br />&#39;print the value in index i from the specified column<br />Console.WriteLine(dv(i)(columnName).ToString())<br />Next<br />End Sub</p>
<p>Private Function GetEmployeesSorted() As DataView<br />&#39;get the connection string from app.config<br />Dim connectionString As String = ConfigurationSettings.AppSettings(&quot;ConnectionString&quot;)<br />&#39;create a new connection and assign our connection string<br />Dim sqlConnection As SqlConnection = New SqlConnection(connectionString)<br />&#39;create a new command and pass our sql statement and our connection object<br />Dim sqlCommand As SqlCommand = New SqlCommand(&quot;Select Lastname from Employees&quot;, sqlConnection)</p>
<p>&#39;open the connection<br />sqlConnection.Open()</p>
<p>&#39;create a new sqladapter and set its command object with our sqlcommand<br />Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)<br />&#39;create a new dataset to hold our data<br />Dim ds As Dat</p>
<p>aSet = N<br />
ew DataSet<br />&#39;fill the dataset with the result of our query from the specified command<br />sqlAdapter.Fill(ds)</p>
<p>&#39;create a new dataview from our table in our dataset at index 0<br />Dim dv As DataView = New DataView(ds.Tables(0))</p>
<p>&#39;apply a sort<br />dv.Sort = &quot;Lastname Desc&quot;</p>
<p>&#39;close our connection<br />sqlConnection.Close()<br />&#39;return our dataview<br />Return dv<br />End Function</p>
<p>Private Function GetEmployeesUnsorted() As DataView<br />&#39;get the connection string from app.config<br />Dim connectionString As String = ConfigurationSettings.AppSettings(&quot;ConnectionString&quot;)<br />&#39;create a new connection and assign our connection string<br />Dim sqlConnection As SqlConnection = New SqlConnection(connectionString)<br />&#39;create a new command and pass our sql statement and our connection object<br />Dim sqlCommand As SqlCommand = New SqlCommand(&quot;Select Lastname from Employees&quot;, sqlConnection)</p>
<p>&#39;open the connection<br />sqlConnection.Open()</p>
<p>&#39;create a new sqladapter and set its command object with our sqlcommand<br />Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)<br />&#39;create a new dataset to hold our data<br />Dim ds As DataSet = New DataSet<br />&#39;fill the dataset with the result of our query from the specified command<br />sqlAdapter.Fill(ds)</p>
<p>&#39;create a new dataview from our table in our dataset at index 0<br />Dim dv As DataView = New DataView(ds.Tables(0))</p>
<p>&#39;close our connection<br />sqlConnection.Close()<br />&#39;return our dataview<br />Return dv<br />End Function</p>
<p>Private Function GetEmployeesWithFilter() As DataView<br />&#39;get the connection string from app.config<br />Dim connectionString As String = ConfigurationSettings.AppSettings(&quot;ConnectionString&quot;)<br />&#39;create a new connection and assign our connection string<br />Dim sqlConnection As SqlConnection = New SqlConnection(connectionString)<br />&#39;create a new command and pass our sql statement and our connection object<br />Dim sqlCommand As SqlCommand = New SqlCommand(&quot;Select Lastname from Employees&quot;, sqlConnection)</p>
<p>&#39;open the connection<br />sqlConnection.Open()</p>
<p>&#39;create a new sqladapter and set its command object with our sqlcommand<br />Dim sqlAdapter As SqlDataAdapter = New SqlDataAdapter(sqlCommand)<br />&#39;create a new dataset to hold our data<br />Dim ds As DataSet = New DataSet<br />&#39;fill the dataset with the result of our query from the specified command<br />sqlAdapter.Fill(ds)</p>
<p>&#39;create a new dataview from our table in our dataset at index 0<br />Dim dv As DataView = New DataView(ds.Tables(0))</p>
<p>&#39;apply our row filter. get only records with a lastname of &#39;Callahan&#39;<br />dv.RowFilter = &quot;LastName = &#39;Callahan&#39;&quot;</p>
<p>&#39;close our connection<br />sqlConnection.Close()<br />&#39;return our dataview<br />Return dv<br />End Function</p>
<p>End Module</p>
<p>Here is the App.Config for both project</p>
<p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;<br />&lt;configuration&gt;<br /> &lt;appSettings&gt;<br /> &lt;add key=&quot;ConnectionString&quot; <br /> value=&quot;server=[yourserver];database=Northwind;uid=[username];pwd=[password];&quot; /&gt;<br /> &lt;/appSettings&gt;<br />&lt;/configuration&gt;</p>
<p></span>
<p><span class="smallblack">Download <a href="http://www.csharphelp.com/archives4/files/archive617/SortingDataTables.zip">SortingDataTables.zip</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.csharphelp.com/2007/07/sorting-data-tables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

