New Look Gmail – Better Gmail 2

Today I installed Firefox 3 on my machine and was browisng for some cool Add-ons and found this amazing add on “Better Gmail 2″ ( ).  it has got 174,670 weekly downloads and 1,086,159 total downloads. It adds useful extra features and skins to Gmail,…

SQL query for finding the 2nd highest salary from an employee table.

This is a very simple SQL query for finding the 2nd highest salary from an employee table. A very common question in .NET interviews. The query is pretty self explanatory. select  top(1)[Name],Salary from Employeewhere  salary  not in (select top (1) salary from employee order by salary desc) ORDER BY SALARY DESC  – Change the top parameter to (nth highest salary – 1)  

Validating an XML File using XSD in .NET .20

Recently I had an issue with .NET 2.0 XML validation. Lets see whats the difference in .NET 2.0 from .NET 1.1  Below given is the.NET 1.1 code for validating an XML File using an XSD File. .NET 1.1 Code //.NET1.1 code////// Methode to validate XML File////// This method expects input XML as string///Path to schema file/// true if xml is validated else falseprivate bool ValidateXmlUsingXsd(string XmlData,String SchemaPath){XmlValidatingReader v = new XmlValidatingReader(XmlData, XmlNodeType.Document, null);v.ValidationType = ValidationType.Schema;v.ValidationEventHandler +=new ValidationEventHandler(MyValidationEventHandler);   while (v.Read()){// Can add code here to process the content.}v.Close(); return isValid; } /// public static void MyValidationEventHandler(object sender,ValidationEventArgs args){//these two variables should be initialized as class level variablesisValid = false;errorMessage = “Validation eventn” + args.Message;////// Method to get XML in a string from an XML file////// } ///private string GetStringFromXML(string fileName){StreamReader rd = new StreamReader(fileName);string str = rd.ReadToEnd();rd.Close();return str;} Calling the method :bool valid = ValidateXmlUsingXsd(str, txtXSD.Text);   There are some changes in the .NET 2.0 code for XML Validation .XmlValidatingReader is marked as obsolete. Need to use XMLReader.Create() using XmlReaderSettngs instead There are some behavioral changes between validation using the XmlReaderSettings and XmlSchemaSet classes and validation using the XmlValidatingReader class. The XmlReaderSettings and XmlSchemaSet classes do not support XML-Data Reduced (XDR) schema validation. The most important difference I found out is that to do XML data validation using a schema, settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;Flag must be enabled. Otherwise the Schema check error will not be displayed. //.NET2.0 codeprivate bool ValidateXmlUsingXsd2(string XmlData,String SchemaPath){XmlReaderSettings settings = new XmlReaderSettings();settings.ValidationType = ValidationType.Schema;settings.Schemas.Add(null, SchemaPath);settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings;settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);More about XmlSchemaValidationFlags Enumeration StringReader xmlStream = new StringReader(XmlData);XmlReader reader = XmlReader.Create(xmlStream, settings);while (reader.Read()) ; return isValid;} private static void ValidationCallBack(object sender, ValidationEventArgs e){isValid = false;errorMessage = “Validation Error: ” + e.Message;}   Member nameDescriptionAllowXmlAttributesAllow xml:* attributes even if they are not defined in the schema. The attributes will be validated based on their data type.NoneDo not process identity constraints, inline schemas, schema location hints, or report schema validation warnings.ProcessIdentityConstraintsProcess identity constraints (xs:ID, xs:IDREF, xs:key, xs:keyref, xs:unique) encountered during validation.ProcessInlineSchemaProcess inline schemas encountered during validation.ProcessSchemaLocationProcess schema location hints (xsi:schemaLocation, xsi:noNamespaceSchemaLocation) encountered during validation.ReportValidationWarningsReport schema validation warnings encountered during validation.In a nutshell, Always set settings.ValidationFlags = XmlSchemaValidationFlags.ReportValidationWarnings; when a schema validation is required for the XML in .NET 2.0

Truncation of fields when CSV file is read using ADO.NET

I encountered a major problem with ADO.NET CSV reader in one of the projects where CSV File Import played a major role. When a field in the CSV file with a “–“(hyphen) is read, the characters before the “–“are discarded. For example the model F-150 is read as –150 and T-Bird in the model field is not being read. And some of the values were missing in some of the fields. Given below is the code I used :  string strConnString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + folderName + “;Extended Properties=”text;HDR=Yes; FMT=Delimited; IMEX=1””; string sqlSelect = “select * from [" + fileName + "]“; System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConnString.Trim()); conn.Open(); System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(sqlSelect, conn); DataSet ds = new DataSet(); ds.ReadXmlSchema(Server.MapPath(”xmlschema.xsd”)); ds.EnforceConstraints = false;  F-100 reads as -100 K-100 reads as -100 S-100 reads as -100 100-F reads as -100 100-K reads as -100 100-S reads as -100 100$F reads as 100 100$K reads as 100 100$S…

Method to sort an array of strings in descending order of number of words in each array element

Just adding a method which i wrote for an application for which the requirement was scrapped.Hope someone can refer to this silly method. ////// Method to sort an array of strings in descending order of number of words in each array element////// Array to be sorted/// Array sorted in descending order of number of words in each array element   private static string[] SortArrayWithDescendingWordCount(string[] strArray){//Array to store the number of words in each string of the array to be sortedint[] wordLengths = new int[strArray.Length];//variable to keep track of array index of wordLengths arrayIndex = 0;foreach (string str in strArray){//split the string in to an array of words and store the word count in wordLengths array.wordLengths[arrayIndex] = str.Split(’ ‘).Length; ;arrayIndex++;}//Sort arrays(ascending order) by taking wordLenths array as key and strArray as valueArray.Sort(wordLengths, strArray);//now reverse strArray array to sort the array in descending order of number of words in each array elementArray.Reverse(strArray);return strArray;}

1 3 4