<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: dbcode code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sat, 26 Jul 2008 22:14:06 GMT</pubDate>
    <description>DZone Snippets: dbcode code</description>
    <item>
      <title>DBCode</title>
      <link>http://snippets.dzone.com/posts/show/2532</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// insert code here..&lt;br /&gt;&lt;br /&gt; The corresponding C# code is very easy to follow.  We perform a select into a DataTable using a DataAdapter.  We then loop the results and calculate the Running Sales on the fly and update the current row in the DataTable at the same time.  Then we perform a Select() on the DataTable to apply the data range to get our final results.&lt;br /&gt;&lt;br /&gt;   1:  using System;&lt;br /&gt;&lt;br /&gt;   2:  using System.Collections.Generic;&lt;br /&gt;&lt;br /&gt;   3:  using System.Data;&lt;br /&gt;&lt;br /&gt;   4:  using System.Data.SqlClient;&lt;br /&gt;&lt;br /&gt;   5:  using System.Data.SqlTypes;&lt;br /&gt;&lt;br /&gt;   6:  using System.Text;&lt;br /&gt;&lt;br /&gt;   7:  using Microsoft.SqlServer;&lt;br /&gt;&lt;br /&gt;   8:  using Microsoft.SqlServer.Server;&lt;br /&gt;&lt;br /&gt;   9:   &lt;br /&gt;&lt;br /&gt;  10:   &lt;br /&gt;&lt;br /&gt;  11:  public partial class StoredProcedures&lt;br /&gt;&lt;br /&gt;  12:  {&lt;br /&gt;&lt;br /&gt;  13:    const string SELECT =&lt;br /&gt;&lt;br /&gt;  14:  @"SELECT  &lt;br /&gt;&lt;br /&gt;  15:    ShipName, ShipAddress, ShipCity, &lt;br /&gt;&lt;br /&gt;  16:    ShipRegion, ShipPostalCode, ShipCountry, &lt;br /&gt;&lt;br /&gt;  17:    CustomerID, CustomerName, Address, City,&lt;br /&gt;&lt;br /&gt;  18:    Region, PostalCode, Country, Salesperson, &lt;br /&gt;&lt;br /&gt;  19:    OrderID, OrderDate, RequiredDate, ShippedDate, &lt;br /&gt;&lt;br /&gt;  20:    ShipperName, ProductID, ProductName, UnitPrice, &lt;br /&gt;&lt;br /&gt;  21:    Quantity, Discount, ExtendedPrice, Freight, &lt;br /&gt;&lt;br /&gt;  22:    ExtendedPrice + Freight AS Total&lt;br /&gt;&lt;br /&gt;  23:  FROM   Invoices&lt;br /&gt;&lt;br /&gt;  24:  WHERE CustomerID = @CustomerID&lt;br /&gt;&lt;br /&gt;  25:  AND OrderDate &lt;= @EndDate";&lt;br /&gt;&lt;br /&gt;  26:   &lt;br /&gt;&lt;br /&gt;  27:    [Microsoft.SqlServer.Server.SqlProcedure]&lt;br /&gt;&lt;br /&gt;  28:    public static void RunningSalesCS(&lt;br /&gt;&lt;br /&gt;  29:      string customerID, &lt;br /&gt;&lt;br /&gt;  30:      DateTime beginDate, &lt;br /&gt;&lt;br /&gt;  31:      DateTime endDate)&lt;br /&gt;&lt;br /&gt;  32:    {&lt;br /&gt;&lt;br /&gt;  33:      decimal runningSales = 0.0M;&lt;br /&gt;&lt;br /&gt;  34:      DataTable table = new DataTable();&lt;br /&gt;&lt;br /&gt;  35:      SqlDataAdapter adapter = null;&lt;br /&gt;&lt;br /&gt;  36:      SqlCommand command = null;&lt;br /&gt;&lt;br /&gt;  37:   &lt;br /&gt;&lt;br /&gt;  38:      using (SqlConnection conn = &lt;br /&gt;&lt;br /&gt;  39:        new SqlConnection("context connection=true"))&lt;br /&gt;&lt;br /&gt;  40:      {&lt;br /&gt;&lt;br /&gt;  41:        command = new SqlCommand(SELECT, conn);&lt;br /&gt;&lt;br /&gt;  42:   &lt;br /&gt;&lt;br /&gt;  43:        command.Parameters.AddWithValue("@CustomerID", customerID);&lt;br /&gt;&lt;br /&gt;  44:        command.Parameters.AddWithValue("@EndDate", endDate);&lt;br /&gt;&lt;br /&gt;  45:   &lt;br /&gt;&lt;br /&gt;  46:        adapter = new SqlDataAdapter(command);&lt;br /&gt;&lt;br /&gt;  47:   &lt;br /&gt;&lt;br /&gt;  48:        conn.Open();&lt;br /&gt;&lt;br /&gt;  49:   &lt;br /&gt;&lt;br /&gt;  50:        int rows = 0;&lt;br /&gt;&lt;br /&gt;  51:   &lt;br /&gt;&lt;br /&gt;  52:        try&lt;br /&gt;&lt;br /&gt;  53:        {&lt;br /&gt;&lt;br /&gt;  54:          rows = adapter.Fill(table);&lt;br /&gt;&lt;br /&gt;  55:        }&lt;br /&gt;&lt;br /&gt;  56:        finally&lt;br /&gt;&lt;br /&gt;  57:        {&lt;br /&gt;&lt;br /&gt;  58:          conn.Close();&lt;br /&gt;&lt;br /&gt;  59:        }&lt;br /&gt;&lt;br /&gt;  60:   &lt;br /&gt;&lt;br /&gt;  61:        if (rows == 0) throw new &lt;br /&gt;&lt;br /&gt;  62:          ApplicationException("No rows returned.");&lt;br /&gt;&lt;br /&gt;  63:   &lt;br /&gt;&lt;br /&gt;  64:        table.Columns.Add(new &lt;br /&gt;&lt;br /&gt;  65:          DataColumn("RunningBalance", &lt;br /&gt;&lt;br /&gt;  66:          typeof(decimal)));&lt;br /&gt;&lt;br /&gt;  67:   &lt;br /&gt;&lt;br /&gt;  68:        foreach(DataRow row in table.Rows)&lt;br /&gt;&lt;br /&gt;  69:        {&lt;br /&gt;&lt;br /&gt;  70:          row["RunningBalance"] = &lt;br /&gt;&lt;br /&gt;  71:            (runningSales += (decimal)row["Total"]);&lt;br /&gt;&lt;br /&gt;  72:        }&lt;br /&gt;&lt;br /&gt;  73:   &lt;br /&gt;&lt;br /&gt;  74:        List&lt;SqlMetaData&gt; metaData = &lt;br /&gt;&lt;br /&gt;  75:          new List&lt;SqlMetaData&gt;(rows);&lt;br /&gt;&lt;br /&gt;  76:   &lt;br /&gt;&lt;br /&gt;  77:        foreach(DataColumn column in table.Columns)&lt;br /&gt;&lt;br /&gt;  78:        {&lt;br /&gt;&lt;br /&gt;  79:          SqlMetaData newMetaData = null;&lt;br /&gt;&lt;br /&gt;  80:   &lt;br /&gt;&lt;br /&gt;  81:          if(column.DataType.FullName == "System.String")&lt;br /&gt;&lt;br /&gt;  82:          {&lt;br /&gt;&lt;br /&gt;  83:              newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt;  84:                column.ColumnName, SqlDbType.NVarChar, 4000);&lt;br /&gt;&lt;br /&gt;  85:          }&lt;br /&gt;&lt;br /&gt;  86:          else if(column.DataType.FullName == "System.Int32")&lt;br /&gt;&lt;br /&gt;  87:          {&lt;br /&gt;&lt;br /&gt;  88:              newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt;  89:                column.ColumnName, SqlDbType.Int);&lt;br /&gt;&lt;br /&gt;  90:          }&lt;br /&gt;&lt;br /&gt;  91:          else if (column.DataType.FullName == "System.Int16")&lt;br /&gt;&lt;br /&gt;  92:          {&lt;br /&gt;&lt;br /&gt;  93:            newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt;  94:              column.ColumnName, SqlDbType.SmallInt);&lt;br /&gt;&lt;br /&gt;  95:          }&lt;br /&gt;&lt;br /&gt;  96:          else if (column.DataType.FullName == "System.Int64")&lt;br /&gt;&lt;br /&gt;  97:          {&lt;br /&gt;&lt;br /&gt;  98:            newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt;  99:              column.ColumnName, SqlDbType.BigInt);&lt;br /&gt;&lt;br /&gt; 100:          }&lt;br /&gt;&lt;br /&gt; 101:          else if (column.DataType.FullName == "System.DateTime")&lt;br /&gt;&lt;br /&gt; 102:          {&lt;br /&gt;&lt;br /&gt; 103:            newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt; 104:              column.ColumnName, SqlDbType.DateTime);&lt;br /&gt;&lt;br /&gt; 105:          }&lt;br /&gt;&lt;br /&gt; 106:          else if (column.DataType.FullName == "System.Boolean")&lt;br /&gt;&lt;br /&gt; 107:          {&lt;br /&gt;&lt;br /&gt; 108:            newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt; 109:              column.ColumnName, SqlDbType.Bit);&lt;br /&gt;&lt;br /&gt; 110:          }&lt;br /&gt;&lt;br /&gt; 111:          else if (column.DataType.FullName == "System.Decimal")&lt;br /&gt;&lt;br /&gt; 112:          {&lt;br /&gt;&lt;br /&gt; 113:            newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt; 114:              column.ColumnName, SqlDbType.Money);&lt;br /&gt;&lt;br /&gt; 115:          }&lt;br /&gt;&lt;br /&gt; 116:          else if (column.DataType.FullName == "System.Single")&lt;br /&gt;&lt;br /&gt; 117:          {&lt;br /&gt;&lt;br /&gt; 118:            newMetaData = new SqlMetaData(&lt;br /&gt;&lt;br /&gt; 119:              column.ColumnName, SqlDbType.Real);&lt;br /&gt;&lt;br /&gt; 120:          }&lt;br /&gt;&lt;br /&gt; 121:          else&lt;br /&gt;&lt;br /&gt; 122:          {&lt;br /&gt;&lt;br /&gt; 123:            throw new ApplicationException(&lt;br /&gt;&lt;br /&gt; 124:              "Could not map " + column.DataType.FullName);&lt;br /&gt;&lt;br /&gt; 125:          }&lt;br /&gt;&lt;br /&gt; 126:   &lt;br /&gt;&lt;br /&gt; 127:          metaData.Add(newMetaData);&lt;br /&gt;&lt;br /&gt; 128:        }&lt;br /&gt;&lt;br /&gt; 129:   &lt;br /&gt;&lt;br /&gt; 130:        if (metaData.Count != table.Columns.Count)&lt;br /&gt;&lt;br /&gt; 131:        {&lt;br /&gt;&lt;br /&gt; 132:          throw new ApplicationException(&lt;br /&gt;&lt;br /&gt; 133:            "Not all columns were mapped to SqlMetaData.");&lt;br /&gt;&lt;br /&gt; 134:        }&lt;br /&gt;&lt;br /&gt; 135:   &lt;br /&gt;&lt;br /&gt; 136:        SqlMetaData[] array = (SqlMetaData[])(metaData.ToArray());&lt;br /&gt;&lt;br /&gt; 137:   &lt;br /&gt;&lt;br /&gt; 138:        if (array == null) throw new ApplicationException(&lt;br /&gt;&lt;br /&gt; 139:          "SqlMetaData array is null.");&lt;br /&gt;&lt;br /&gt; 140:   &lt;br /&gt;&lt;br /&gt; 141:        if (array.Length == 0) throw new ApplicationException(&lt;br /&gt;&lt;br /&gt; 142:          "No columns in SqlMetaData array.");&lt;br /&gt;&lt;br /&gt; 143:   &lt;br /&gt;&lt;br /&gt; 144:        bool isFirst = true;&lt;br /&gt;&lt;br /&gt; 145:   &lt;br /&gt;&lt;br /&gt; 146:        DataRow[] results = table.Select(&lt;br /&gt;&lt;br /&gt; 147:          "[OrderDate]&gt;=#" + beginDate + "#");&lt;br /&gt;&lt;br /&gt; 148:   &lt;br /&gt;&lt;br /&gt; 149:        SqlContext.Pipe.Send(string.Format(&lt;br /&gt;&lt;br /&gt; 150:          "Returning {0} rows.", results.Length));&lt;br /&gt;&lt;br /&gt; 151:   &lt;br /&gt;&lt;br /&gt; 152:        foreach (DataRow row in results)&lt;br /&gt;&lt;br /&gt; 153:        {&lt;br /&gt;&lt;br /&gt; 154:          SqlDataRecord record = new SqlDataRecord(array);&lt;br /&gt;&lt;br /&gt; 155:   &lt;br /&gt;&lt;br /&gt; 156:          for(int i=0; i&lt;record.FieldCount; i++)&lt;br /&gt;&lt;br /&gt; 157:          {&lt;br /&gt;&lt;br /&gt; 158:            record.SetValue(i, row[i]);&lt;br /&gt;&lt;br /&gt; 159:          }&lt;br /&gt;&lt;br /&gt; 160:   &lt;br /&gt;&lt;br /&gt; 161:          if(!isFirst)&lt;br /&gt;&lt;br /&gt; 162:          {&lt;br /&gt;&lt;br /&gt; 163:            SqlContext.Pipe.SendResultsRow(record);&lt;br /&gt;&lt;br /&gt; 164:          }&lt;br /&gt;&lt;br /&gt; 165:          else&lt;br /&gt;&lt;br /&gt; 166:          {&lt;br /&gt;&lt;br /&gt; 167:            SqlContext.Pipe.SendResultsStart(record);&lt;br /&gt;&lt;br /&gt; 168:            SqlContext.Pipe.SendResultsRow(record);&lt;br /&gt;&lt;br /&gt; 169:            isFirst = false;&lt;br /&gt;&lt;br /&gt; 170:          }&lt;br /&gt;&lt;br /&gt; 171:        }&lt;br /&gt;&lt;br /&gt; 172:   &lt;br /&gt;&lt;br /&gt; 173:        if(!isFirst)&lt;br /&gt;&lt;br /&gt; 174:        {&lt;br /&gt;&lt;br /&gt; 175:          SqlContext.Pipe.SendResultsEnd();&lt;br /&gt;&lt;br /&gt; 176:        }&lt;br /&gt;&lt;br /&gt; 177:      }&lt;br /&gt;&lt;br /&gt; 178:    }&lt;br /&gt;&lt;br /&gt; 179:  };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 05 Sep 2006 00:22:36 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2532</guid>
      <author>jdmays ()</author>
    </item>
  </channel>
</rss>
