Wednesday, March 30, 2011

JavaScript Validations

http://rgagnon.com/jsdetails/js-0063.html

The test page is http://rgagnon.com/examples/jsregexp.html


Use regular expressions to validate/format a string

This is an impressive collection (that I found somehere on the Net) of various functions to validate or format string in Javascript. The code is very compact.

/****************************************************************
FILE: RegExpValidate.js

DESCRIPTION: This file contains a library of validation functions
  using javascript regular expressions.  Library also contains 
  functions that reformat fields for display or for storage.


  VALIDATION FUNCTIONS:

  validateEmail - checks format of email address
    validateUSPhone - checks format of US phone number
    validateNumeric - checks for valid numeric value
  validateInteger - checks for valid integer value
    validateNotEmpty - checks for blank form field
  validateUSZip - checks for valid US zip code
  validateUSDate - checks for valid date in US format
  validateValue - checks a string against supplied pattern

  FORMAT FUNCTIONS:

  rightTrim - removes trailing spaces from a string
  leftTrim - removes leading spaces from a string
  trimAll - removes leading and trailing spaces from a string
  removeCurrency - removes currency formatting characters (), $
  addCurrency - inserts currency formatting characters
  removeCommas - removes comma separators from a number
  addCommas - adds comma separators to a number
  removeCharacters - removes characters from a string that match 
  passed pattern


AUTHOR: Karen Gayda

DATE: 03/24/2000
*******************************************************************/

function validateEmail( strValue) {
/************************************************
DESCRIPTION: Validates that a string contains a
  valid email pattern.

 PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

REMARKS: Accounts for email with country appended
  does not validate that email contains valid URL
  type (.com, .gov, etc.) or valid country suffix.
*************************************************/
var objRegExp  =
 /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@
  ([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i;

  //check for valid email
  return objRegExp.test(strValue);
}

function validateUSPhone( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains valid
  US phone pattern.
  Ex. (999) 999-9999 or (999)999-9999

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
*************************************************/
  var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;

  //check for valid us phone with or without space between
  //area code
  return objRegExp.test(strValue);
}

function  validateNumeric( strValue ) {
/*****************************************************************
DESCRIPTION: Validates that a string contains only valid numbers.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
******************************************************************/
  var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;

  //check for numeric characters
  return objRegExp.test(strValue);
}

function validateInteger( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains only
    valid integer number.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
**************************************************/
  var objRegExp  = /(^-?\d\d*$)/;

  //check for integer characters
  return objRegExp.test(strValue);
}

function validateNotEmpty( strValue ) {
/************************************************
DESCRIPTION: Validates that a string is not all
  blank (whitespace) characters.

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.
*************************************************/
   var strTemp = strValue;
   strTemp = trimAll(strTemp);
   if(strTemp.length > 0){
     return true;
   }
   return false;
}

function validateUSZip( strValue ) {
/************************************************
DESCRIPTION: Validates that a string a United
  States zip code in 5 digit format or zip+4
  format. 99999 or 99999-9999

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

*************************************************/
var objRegExp  = /(^\d{5}$)|(^\d{5}-\d{4}$)/;

  //check for valid US Zipcode
  return objRegExp.test(strValue);
}

function validateUSDate( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains only
    valid dates with 2 digit month, 2 digit day,
    4 digit year. Date separator can be ., -, or /.
    Uses combination of regular expressions and
    string parsing to validate date.
    Ex. mm/dd/yyyy or mm-dd-yyyy or mm.dd.yyyy

PARAMETERS:
   strValue - String to be tested for validity

RETURNS:
   True if valid, otherwise false.

REMARKS:
   Avoids some of the limitations of the Date.parse()
   method such as the date separator character.
*************************************************/
  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
  //check to see if in correct format
  if(!objRegExp.test(strValue))
    return false; //doesn't match pattern, bad date
  else{
    var strSeparator = strValue.substring(2,3) 
    var arrayDate = strValue.split(strSeparator); 
    //create a lookup for months not equal to Feb.
    var arrayLookup = { '01' : 31,'03' : 31, 
                        '04' : 30,'05' : 31,
                        '06' : 30,'07' : 31,
                        '08' : 31,'09' : 30,
                        '10' : 31,'11' : 30,'12' : 31}
    var intDay = parseInt(arrayDate[1],10); 

    //check if month value and day value agree
    if(arrayLookup[arrayDate[0]] != null) {
      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
        return true; //found in lookup table, good date
    }
    
    //check for February (bugfix 20050322)
    //bugfix  for parseInt kevin
    //bugfix  biss year  O.Jp Voutat
    var intMonth = parseInt(arrayDate[0],10);
    if (intMonth == 2) { 
       var intYear = parseInt(arrayDate[2]);
       if (intDay > 0 && intDay < 29) {
           return true;
       }
       else if (intDay == 29) {
         if ((intYear % 4 == 0) && (intYear % 100 != 0) || 
             (intYear % 400 == 0)) {
              // year div by 4 and ((not div by 100) or div by 400) ->ok
             return true;
         }   
       }
    }
  }  
  return false; //any other values, bad date
}

function validateValue( strValue, strMatchPattern ) {
/************************************************
DESCRIPTION: Validates that a string a matches
  a valid regular expression value.

PARAMETERS:
   strValue - String to be tested for validity
   strMatchPattern - String containing a valid
      regular expression match pattern.

RETURNS:
   True if valid, otherwise false.
*************************************************/
var objRegExp = new RegExp( strMatchPattern);

 //check if string matches pattern
 return objRegExp.test(strValue);
}


function rightTrim( strValue ) {
/************************************************
DESCRIPTION: Trims trailing whitespace chars.

PARAMETERS:
   strValue - String to be trimmed.

RETURNS:
   Source string with right whitespaces removed.
*************************************************/
var objRegExp = /^([\w\W]*)(\b\s*)$/;

      if(objRegExp.test(strValue)) {
       //remove trailing a whitespace characters
       strValue = strValue.replace(objRegExp, '$1');
    }
  return strValue;
}

function leftTrim( strValue ) {
/************************************************
DESCRIPTION: Trims leading whitespace chars.

PARAMETERS:
   strValue - String to be trimmed

RETURNS:
   Source string with left whitespaces removed.
*************************************************/
var objRegExp = /^(\s*)(\b[\w\W]*)$/;

      if(objRegExp.test(strValue)) {
       //remove leading a whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

function trimAll( strValue ) {
/************************************************
DESCRIPTION: Removes leading and trailing spaces.

PARAMETERS: Source string from which spaces will
  be removed;

RETURNS: Source string with whitespaces removed.
*************************************************/
 var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }

   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

function removeCurrency( strValue ) {
/************************************************
DESCRIPTION: Removes currency formatting from
  source string.

PARAMETERS:
  strValue - Source string from which currency formatting
     will be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /\(/;
  var strMinus = '';

  //check if negative
  if(objRegExp.test(strValue)){
    strMinus = '-';
  }

  objRegExp = /\)|\(|[,]/g;
  strValue = strValue.replace(objRegExp,'');
  if(strValue.indexOf('$') >= 0){
    strValue = strValue.substring(1, strValue.length);
  }
  return strMinus + strValue;
}

function addCurrency( strValue ) {
/************************************************
DESCRIPTION: Formats a number as currency.

PARAMETERS:
  strValue - Source string to be formatted

REMARKS: Assumes number passed is a valid
  numeric value in the rounded to 2 decimal
  places.  If not, returns original value.
*************************************************/
  var objRegExp = /-?[0-9]+\.[0-9]{2}$/;

    if( objRegExp.test(strValue)) {
      objRegExp.compile('^-');
      strValue = addCommas(strValue);
      if (objRegExp.test(strValue)){
        strValue = '(' + strValue.replace(objRegExp,'') + ')';
      }
      return '$' + strValue;
    }
    else
      return strValue;
}

function removeCommas( strValue ) {
/************************************************
DESCRIPTION: Removes commas from source string.

PARAMETERS:
  strValue - Source string from which commas will
    be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /,/g; //search for commas globally

  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}

function addCommas( strValue ) {
/************************************************
DESCRIPTION: Inserts commas into numeric string.

PARAMETERS:
  strValue - source string containing commas.

RETURNS: String modified with comma grouping if
  source was all numeric, otherwise source is
  returned.

REMARKS: Used with integers or numbers with
  2 or less decimal places.
*************************************************/
  var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})');

    //check for match to search criteria
    while(objRegExp.test(strValue)) {
       //replace original string with first group match,
       //a comma, then second group match
       strValue = strValue.replace(objRegExp, '$1,$2');
    }
  return strValue;
}

function removeCharacters( strValue, strMatchPattern ) {
/************************************************
DESCRIPTION: Removes characters from a source string
  based upon matches of the supplied pattern.

PARAMETERS:
  strValue - source string containing number.

RETURNS: String modified with characters
  matching search pattern removed

USAGE:  strNoSpaces = removeCharacters( ' sfdf  dfd',
                                '\s*')
*************************************************/
 var objRegExp =  new RegExp( strMatchPattern, 'gi' );

 //replace passed pattern matches with blanks
  return strValue.replace(objRegExp,'');
}
You can try it here.
If you want to know more about these MSDN pages :
RegExp Object
Regular Expression Syntax

Common expressions

Date
   /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/     mm/dd/yyyy
   
US zip code
  /(^\d{5}$)|(^\d{5}-\d{4}$)/             99999 or 99999-9999
  
Canadian postal code
  /^\D{1}\d{1}\D{1}\-?\d{1}\D{1}\d{1}$/   Z5Z-5Z5 orZ5Z5Z5
  
Time
  /^([1-9]|1[0-2]):[0-5]\d(:[0-5]\d(\.\d{1,3})?)?$/   HH:MM or HH:MM:SS or HH:MM:SS.mmm
  
IP Address(no check for alid values (0-255))
  /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ 999.999.999.999
  
Dollar Amount
  /^((\$\d*)|(\$\d*\.\d{2})|(\d*)|(\d*\.\d{2}))$/ 100, 100.00, $100 or $100.00
  
Social Security Number
  /^\d{3}\-?\d{2}\-?\d{4}$/   999-99-9999 or999999999
  
Canadian Social Insurance Number
  /^\d{9}$/ 999999999

Tuesday, March 29, 2011

Important about Triggers from bol



At most, one INSTEAD OF trigger per INSERT, UPDATE, or DELETE statement can be defined on a table or view.

INSTEAD OF triggers are not allowed on updatable views that use WITH CHECK OPTION.


Mutliple triggers are allowed in SQL server .

Order of multiple triggers is random in general,  however, the first and last trigger can be set using
Sp_settriggerorder. This sp can decide only  the first and last trigger.
Recursion in trigger is allowed, e.g. an update trigger may fire itself by updating its own table.
But this requires RECURSIVE_TRIGGERS setting of the database to be set.
INSTEAD OF Triggers cannot be recursive and there can not multiple instead of trigger for a single operation i.e. UPDATE,DELETE , INSERT .

Thursday, March 24, 2011

Silverlight Business Application Tutorial

http://blogs.microsoft.co.il/blogs/helpercoil/archive/2010/09/18/introduction-to-silverlight-and-wcf-ria-tutorial-part-1-setting-the-silverlight-site.aspx


http://blogs.microsoft.co.il/blogs/helpercoil/archive/2010/09/18/introduction-to-silverlight-and-wcf-ria-tutorial-part-2-displaying-data.aspx

http://blogs.microsoft.co.il/blogs/helpercoil/archive/2010/09/19/introduction-to-silverlight-and-wcf-ria-tutorial-part-3-domain-data-source.aspx


1.
Content="{Binding Path=Strings.ProductsTitle,      Source={StaticResource ApplicationResources}}"
Note Both the values : [Strings.ProductsTitle]
 and [StaticResource ApplicationResources]

2. Reference the Domain Service in Client App as  :
        Dim x As New BusinessApplication1.DomainService1
        Me.dg1.ItemsSource = x.Products
        x.Load(x.GetProductsQuery())

--When you add a EF model, build the "Web" project

--when you add the DomainService, buid the project

--Add the DomainService in "Services" folder

--When referencing the DomainService in the "Application" project,
 see that you use something like "BusinessApplication1.DomainService1"
 because the namespace "BusinessApplication1.Web.Services" and
 the variable "BusinessApplication1.Web.Services.ProductContext" is not
 available in "Application" project, because the DomainService is in the
 default namespace of "BusinessApplication" and not in
 "BusinessApplication1.Web.Services"
 If you want to use "BusinessApplication1.Web.Services" namespace
 then you need to go to ".vb" or ".vc"  file of the service
 and change the namespace



====================
Dim x As New BusinessApplication1.DomainService1
x.Load(x.GetProductsQuery())
Me.dg1.ItemsSource = x.Products'ProductsContext _pContext;'private void Page_Loaded(object sender, RoutedEventArgs e)'{ _pContext = new ProductsContext(); 'this.dg1.ItemsSource = _pContext.Products;' _pContext.Load(_pContext.GetProductsQuery());====================

Monday, March 21, 2011

''

Imports System
Imports System.Type
Imports System.ServiceModel
Imports System.ServiceModel.Description
Imports ClassLibrary1
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim tcpa As New Uri("net.tcp://localhost:8000")
        Dim sh As New ServiceHost(System.Type.GetType("ClassLibrary1.MyServiceClass,ClassLibrary1"), New Uri("net.pipe://localhost"), tcpa)
        Dim tcpb As New NetTcpBinding
        Dim mbehave As New ServiceMetadataBehavior
        sh.Description.Behaviors.Add(mbehave)
        sh.AddServiceEndpoint(GetType(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex")
        sh.AddServiceEndpoint(GetType(IMetadataExchange), MetadataExchangeBindings.CreateMexNamedPipeBinding, "mex")
        sh.AddServiceEndpoint(System.Type.GetType("ClassLibrary1.IMyService,ClassLibrary1"), tcpb, tcpa)
        sh.AddServiceEndpoint(System.Type.GetType("ClassLibrary1.IMyService,ClassLibrary1"), New NetNamedPipeBinding, New Uri("net.pipe://localhost"))
        sh.Open()
    End Sub
End Class

GetType Gotchas in VB .NET

Since VB .NET has a built in GetType method , some confusion is created when using GetType in VB .NET.

I will conclude following two points from my experience :

1. Use the VB .NET GetType  to get types  of System defined types.
2. Use System.Type.GetType("FullyqualifiedTypeName , AssemblyName") to get Type of user
defined types.

In the following, "MyServiceClass" is a class defined in an external class library ClassLibrary1. Further the class
implements IMyService interface, which is also defined in the same class library. Here the class and interface are being
refered outside of the class library, in a differenct project, with a reference to the ClassLibrary1.dll added.



Imports SystemImports System.TypeImports System.ServiceModelImports System.ServiceModel.DescriptionImports ClassLibrary1Public





sh.Description.Behaviors.Add(mbehave)
sh.AddServiceEndpoint(
sh.AddServiceEndpoint(
sh.AddServiceEndpoint(System.Type.GetType(
sh.AddServiceEndpoint(System.Type.GetType(
sh.Open()

End
Class Form1Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim tcpa As New Uri("net.tcp://localhost:8000")Dim sh As New ServiceHost(System.Type.GetType("ClassLibrary1.MyServiceClass,ClassLibrary1"), New Uri("net.pipe://localhost"), tcpa)Dim tcpb As New NetTcpBindingDim mbehave As New ServiceMetadataBehaviorGetType(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex")GetType(IMetadataExchange), MetadataExchangeBindings.CreateMexNamedPipeBinding, "mex")"ClassLibrary1.IMyService,ClassLibrary1"), tcpb, tcpa)"ClassLibrary1.IMyService,ClassLibrary1"), New NetNamedPipeBinding, New Uri("net.pipe://localhost"))End Sub Class

Sunday, March 13, 2011

Try Catch block variable access scope


Are the variables declared in  a try block accessible in
the catch block ?
NO. For a variable to be accessible in both try and catch block
it must be declared outside of both blocks.
e.g in the following, variable ut is not accessible in
catch block because it is declared in try block, hence the code will not compile
and will give "Name "ut" is not declared" error

        Try
     Dim ut As New Utility
            Dim dr As DataRow() = x.[Select]("DateTime < '" & DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss.fff") & "'")
            If dr.Length > 0 Then
                For Each drr As DataRow In dr
                    drr.Delete()
                    ut.WriteLog("C:\test.txt", "Deleted Some Records")
                Next
            End If
        Catch ex As Exception
            ut.WriteLog("C:\test.txt", "Deleted Some Records" + " " + ex.Message)
        End Try

Wednesday, March 9, 2011

What is wrong with this Connection String ?

QUESTION : What's  wrong with this connection string  ?


string
userid=gps;password=1234#";




ANSWER :  You will get the following error :
 "Keyword not supported:'userid'"






The correct connstr should be:
string connstr = "Data Source=IBM\\SFT;Initial Catalog=GPS_Live;User ID=gps;
uid=gps;password=gPs123!@#";
connstr = "Data Source=IBM\\SFT;Initial Catalog=GPS_Live;

Caching and Manipulating a DataTable in memory (without storing in SQL)

Default.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;usingSystem.IO;using System.Data;using System.Data.SqlClient;public
{


{

{
th =
th.AddRowWithVerification(
th.AddRowWithVerification(
th.AddRowWithVerification(
Session[
}

{
th =
}
GridView1.DataSource = th.GetTable();
GridView1.DataBind();
partial class _Default : System.Web.UI.Page TableHandler th;protected void Page_Load(object sender, EventArgs e)if (Session["THTable"] == null)new TableHandler();"aa11", "bb", "ccb", DateTime.Now);"aa2", "bb", "cc", DateTime.Now);"aa22", "bbb", "ccb", DateTime.Now);"THTable"] = th.GetTable();if (Session["THTable"] != null && th == null)new TableHandler();// Start date
DateTime startDate = new DateTime(2005, 2, 1, 3, 4, 12, 56);// End date
DateTime endDate = new DateTime(2005, 12, 12, 4, 30, 45, 12);// Time span
TimeSpan diffDate = endDate.Subtract(startDate);// Spit it out Label1.Text =

Label1.Text += (diffDate.Days.ToString() +
Label1.Text += (diffDate.Hours.ToString() +
Label1.Text += (diffDate.Minutes.ToString() +
Label1.Text += (diffDate.Seconds.ToString() +
Label1.Text += (diffDate.Milliseconds.ToString() +
Label1.Text +=
Label1.Text += diffDate.TotalMilliseconds +
Label1.Text +=
Label1.Text += (
}

{
th.AddRowWithVerification(TextBox1.Text,TextBox2.Text,TextBox3.Text,
GridView1.DataBind();
}
}

"Start Date:" + startDate.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<br>" + "End Date:" + endDate.ToString("yyyy-MM-dd HH:mm:ss.fff") +"<br>" + "Time Difference: ";" Days,");" Hours,");" Minutes,");" Seconds,");" Milliseconds " + "<br>");"Total TimeDifference: " + diffDate.TotalMinutes + "Minutes = " + diffDate.TotalHours + "Hours = ";"Millisecs = " + diffDate.TotalDays + "Days" + "<br>";DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss.fff") + " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<br>";DateTime.Now.AddMinutes(-30) < DateTime.Now) ? (DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss.fff")) : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");protected void Button1_Click(object sender, EventArgs e)DateTime.Now);//pagepublic class TableHandler{


{

{
x =
x.Columns.Add(
x.Columns.Add(
x.Columns.Add(
x.Columns.Add(

dr[
dr[
dr[
dr[
x.Rows.Add(dr);
System.Web.
}
DataTable x;public TableHandler()if (System.Web.HttpContext.Current.Session["THTable"] == null)new DataTable();new DataColumn("IPAddress", System.Type.GetType("System.String")));new DataColumn("PortNo", System.Type.GetType("System.String")));new DataColumn("DeviceIMEINo", System.Type.GetType("System.String")));new DataColumn("DateTime", System.Type.GetType("System.DateTime")));DataRow dr = x.NewRow();"IPAddress"] = "sfds";"PortNo"] = "sdfds";"DeviceIMEINo"] = "dsfds";"DateTime"] = DateTime.Now;HttpContext.Current.Session["THTable"] = x;elsex = (
}

{
(
DeleteOldRecords();
DataTable)System.Web.HttpContext.Current.Session["THTable"];public void AddRowWithVerification(string IPAddress, string PortNo, string DeviceIMEINo, DateTime dtinn)new Utility()).WriteLog("C:\\test\\test.txt" ,"AddRowWithVerification Called");DataRow[] dr = x.Select("DeviceIMEINo = '" + DeviceIMEINo + "'");if (dr.Count() > 0) //row already exists , update it{

drr[
drr[
drr[
}
DataRow drr = dr[0];"IPAddress"] = IPAddress;"PortNo"] = PortNo;"DateTime"] = dtinn;else //add new row{

drr[
drr[
drr[
drr[
x.Rows.Add(drr);
}
System.Web.
}
DataRow drr = x.NewRow();"IPAddress"] = IPAddress;"PortNo"] = PortNo;"DeviceIMEINo"] = DeviceIMEINo;"DateTime"] = dtinn;HttpContext.Current.Session["THTable"] = x;//AddRowWithVerification
{

dr[
dr[
dr[
x.Rows.Add(dr);
System.Web.
}
public void AddRow(string IPAddress, string PortNo, string DeviceIMEINo)DataRow dr = x.NewRow();"IPAddress"] = IPAddress;"PortNo"] = PortNo;"DeviceIMEINo"] = DeviceIMEINo;HttpContext.Current.Session["THTable"] = x;//AddRow
{

}
public DataTable GetTable()return (DataTable)System.Web.HttpContext.Current.Session["THTable"];//GetTable
{


{

{
drr.Delete();
(
}
}
}
void DeleteOldRecords()DataRow[] dr = x.Select("DateTime < '" + DateTime.Now.AddMinutes(-1).ToString("yyyy-MM-dd HH:mm:ss.fff") + "'");if (dr.Count() > 0)foreach (DataRow drr in dr)new Utility()).WriteLog("C:\\test\\test.txt", "Deleted Some Records");//DeleteOldRecords
{


DeviceIMEIMo = dr[0][

}
public string GetDeviceIMEINo(string IPAddress)string DeviceIMEIMo = "";DataRow[] dr = x.Select("IPAddress = " + IPAddress.Trim());"DeviceIMEINo"].ToString().Trim();return DeviceIMEIMo;//GetDeviceIMEINo}



//TableHandlerpublic class Utility{

{


sr.WriteLine(LogString);
sr.Flush();
sr.Close();
}
}
public void WriteLog(string FileName, string LogString)FileStream ff = new FileStream(FileName, FileMode.Append);StreamWriter sr = new StreamWriter(ff);
Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!
<
<
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">html xmlns="http://www.w3.org/1999/xhtml">head runat="server">
</
<
<title></title>head>body><form id="form1" runat="server"><div>
<asp:GridView ID="GridView1" runat="server"></asp:GridView><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</div>
</
</
</form>body>html>





using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using
System.IO;using System.Data;using System.Data.SqlClient;public
{


{

{
th =
th.AddRowWithVerification(
th.AddRowWithVerification(
th.AddRowWithVerification(
Session[
}

{
th =
}
GridView1.DataSource = th.GetTable();
GridView1.DataBind();

partial class _Default : System.Web.UI.Page TableHandler th;protected void Page_Load(object sender, EventArgs e)if (Session["THTable"] == null)new TableHandler();"aa11", "bb", "ccb", DateTime.Now);"aa2", "bb", "cc", DateTime.Now);"aa22", "bbb", "ccb", DateTime.Now);"THTable"] = th.GetTable();if (Session["THTable"] != null && th == null)new TableHandler();// Start date
DateTime startDate = new DateTime(2005, 2, 1, 3, 4, 12, 56);// End date
DateTime endDate = new DateTime(2005, 12, 12, 4, 30, 45, 12);// Time span
TimeSpan diffDate = endDate.Subtract(startDate);// Spit it out Label1.Text =

Label1.Text += (diffDate.Days.ToString() +
Label1.Text += (diffDate.Hours.ToString() +
Label1.Text += (diffDate.Minutes.ToString() +
Label1.Text += (diffDate.Seconds.ToString() +
Label1.Text += (diffDate.Milliseconds.ToString() +
Label1.Text +=
Label1.Text += diffDate.TotalMilliseconds +
Label1.Text +=
Label1.Text += (
}

{
th.AddRowWithVerification(TextBox1.Text,TextBox2.Text,TextBox3.Text,
GridView1.DataBind();
}
}


"Start Date:" + startDate.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<br>" + "End Date:" + endDate.ToString("yyyy-MM-dd HH:mm:ss.fff") +"<br>" + "Time Difference: ";" Days,");" Hours,");" Minutes,");" Seconds,");" Milliseconds " + "<br>");"Total TimeDifference: " + diffDate.TotalMinutes + "Minutes = " + diffDate.TotalHours + "Hours = ";"Millisecs = " + diffDate.TotalDays + "Days" + "<br>";DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss.fff") + " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "<br>";DateTime.Now.AddMinutes(-30) < DateTime.Now) ? (DateTime.Now.AddMinutes(-30).ToString("yyyy-MM-dd HH:mm:ss.fff")) : DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");protected void Button1_Click(object sender, EventArgs e)DateTime.Now);//pagepublic class TableHandler{


{

{
x =
x.Columns.Add(
x.Columns.Add(
x.Columns.Add(
x.Columns.Add(

dr[
dr[
dr[
dr[
x.Rows.Add(dr);
System.Web.
}
DataTable x;public TableHandler()if (System.Web.HttpContext.Current.Session["THTable"] == null)new DataTable();new DataColumn("IPAddress", System.Type.GetType("System.String")));new DataColumn("PortNo", System.Type.GetType("System.String")));new DataColumn("DeviceIMEINo", System.Type.GetType("System.String")));new DataColumn("DateTime", System.Type.GetType("System.DateTime")));DataRow dr = x.NewRow();"IPAddress"] = "sfds";"PortNo"] = "sdfds";"DeviceIMEINo"] = "dsfds";"DateTime"] = DateTime.Now;HttpContext.Current.Session["THTable"] = x;elsex = (
}

{
(
DeleteOldRecords();

DataTable)System.Web.HttpContext.Current.Session["THTable"];public void AddRowWithVerification(string IPAddress, string PortNo, string DeviceIMEINo, DateTime dtinn)new Utility()).WriteLog("C:\\test\\test.txt" ,"AddRowWithVerification Called");DataRow[] dr = x.Select("DeviceIMEINo = '" + DeviceIMEINo + "'");if (dr.Count() > 0) //row already exists , update it{

drr[
drr[
drr[
}
DataRow drr = dr[0];"IPAddress"] = IPAddress;"PortNo"] = PortNo;"DateTime"] = dtinn;else //add new row{

drr[
drr[
drr[
drr[
x.Rows.Add(drr);
}
System.Web.
}
DataRow drr = x.NewRow();"IPAddress"] = IPAddress;"PortNo"] = PortNo;"DeviceIMEINo"] = DeviceIMEINo;"DateTime"] = dtinn;HttpContext.Current.Session["THTable"] = x;//AddRowWithVerification
{

dr[
dr[
dr[
x.Rows.Add(dr);
System.Web.
}
public void AddRow(string IPAddress, string PortNo, string DeviceIMEINo)DataRow dr = x.NewRow();"IPAddress"] = IPAddress;"PortNo"] = PortNo;"DeviceIMEINo"] = DeviceIMEINo;HttpContext.Current.Session["THTable"] = x;//AddRow
{

}
public DataTable GetTable()return (DataTable)System.Web.HttpContext.Current.Session["THTable"];//GetTable
{


{

{
drr.Delete();
(
}
}
}
void DeleteOldRecords()DataRow[] dr = x.Select("DateTime < '" + DateTime.Now.AddMinutes(-1).ToString("yyyy-MM-dd HH:mm:ss.fff") + "'");if (dr.Count() > 0)foreach (DataRow drr in dr)new Utility()).WriteLog("C:\\test\\test.txt", "Deleted Some Records");//DeleteOldRecords
{


DeviceIMEIMo = dr[0][

}
public string GetDeviceIMEINo(string IPAddress)string DeviceIMEIMo = "";DataRow[] dr = x.Select("IPAddress = " + IPAddress.Trim());"DeviceIMEINo"].ToString().Trim();return DeviceIMEIMo;//GetDeviceIMEINo}




//TableHandlerpublic class Utility{

{


sr.WriteLine(LogString);
sr.Flush();
sr.Close();
}
}
public void WriteLog(string FileName, string LogString)FileStream ff = new FileStream(FileName, FileMode.Append);StreamWriter sr = new StreamWriter(ff);