Thursday, 28 December 2017

The basics of MS SQL (Microsoft SQL Server) & their datatype

The basics of SQL:
What are the difference between DDL, DML and DCL commands?
  1. DDL is Data Definition Language statements. 
    • CREATE - to create objects in the database 
    • ALTER - alters the structure of the database 
    • DROP - delete objects from the database
    • TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed 
    • COMMENT - add comments to the data dictionary 
    • GRANT - gives user's access privileges to database 
    • REVOKE - withdraw access privileges given with the GRANT command
  2. DML is Data Manipulation Language statements. 
    • SELECT - retrieve data from the a database 
    • INSERT - insert data into a table 
    • UPDATE - updates existing data within a table 
    • DELETE - deletes all records from a table, the space for the records remain 
    • CALL - call a PL/SQL or Java subprogram 
    • EXPLAIN PLAN - explain access path to data 
    • LOCK TABLE - control concurrency
  3. DCL is Data Control Language statements.
    • COMMIT - save work done 
    • SAVEPOINT - identify a point in a transaction to which you can later roll back 
    • ROLLBACK - restore database to original since the last COMMIT
    • SET TRANSACTION - Change transaction options like what rollback segment to use

SQL Data Type
  1. Exact numerics
    • bigint 
    • numeric
    • bit
    • smallint
    • decimal
    • smallmoney
    • int
    • tinyint
    • money
  2. Approximate numerics
    • float
    • real
  3. Date and time
      • date
      • datetimeoffset
        • datetime2
        • smalldatetime
        • datetime
        • time
      1. Character strings
        • char
        • varchar
        • text
      2. Unicode character strings
        • nchar
        • nvarchar
        • ntext
      3. Binary strings
        • binary
        • varbinary
        • image
      4. Other data types
        • cursor
        • rowversion
        • hierarchyid
        • uniqueidentifier
        • sql_variant
        • xml
        • Spatial Geometry Types
        • Spatial Geography Types
        • table

      Thursday, 21 December 2017

      Repeat Rows N Times According to Column Value in SQL Server

      CREATE TAblE #temp
      (
      T_Name      VARCHAR(50),
      T_Times      BIGINT
      )

      INSERT INTO #temp(T_Name,T_Times) VALUES ('ASHISH',4)
      INSERT INTO #temp(T_Name,T_Times) VALUES ('PANKAJ',3)
      INSERT INTO #temp(T_Name,T_Times) VALUES ('RUPESH',2)
      INSERT INTO #temp(T_Name,T_Times) VALUES ('MANISH',5)

      SELECT t.T_Name ,t.T_Times FROM
      (SELECT  T_Name,T_Times,CAST(('<val>'+REPLICATE(T_Name+'</val><val>',T_Times-1)
      +'</val>') AS XML )AS X FROM #temp)t CROSS APPLY t.X.nodes('/val')y(z)

      drop table #temp



      Function with no Arguments but Return Value In C

      1. /*C program to check whether a number entered by user is prime or not using function with no arguments but having return value */  
      2. #include <stdio.h>  
      3. #include <conio.h>  
      4. int input();  
      5. void main(){  
      6.     int num,i,flag = 0;  
      7.     num=input();     /* No argument is passed to input() */  
      8.     for(i=2; i<=num/2; ++i){  
      9.     if(num%i==0){  
      10.         flag = 1;  
      11.         break;  
      12.     }  
      13.     }  
      14.     if(flag == 1)  
      15.         printf("%d is not prime",num);  
      16.     else  
      17.         printf("%d is prime", num);  
      18.     getch();  
      19. }  
      20. int input(){   /* Integer value is returned from input() to calling function */  
      21.     int n;  
      22.     printf("Enter positive integer to check:\n");  
      23.     scanf("%d",&n);  
      24.     return n;  
      25. }  

      The ASCII Character Set

      Character data is represented in a computer by using standardized numeric codes which have been developed. The most widely accepted code is called the American Standard Code for Information Interchange ( ASCII). The ASCII code associates an integer value for each symbol in the character set, such as letters, digits, punctuation marks, special characters, and control characters. Some implementations use other codes for representing characters, but we will use ASCII since it is the most widely used. The ASCII characters and their decimal code values are shown in Table 4.2. Of course, the internal machine representation of characters is in equivalent binary form.


      The ASCII table has 128 characters, with values from 0 through 127. Thus, 7 bits are sufficient to represent a character in ASCII; however, most computers typically reserve 1 byte, (8 bits), for an ASCII character. One byte allows a numeric range from 0 through 255 which leaves room for growth in the size of the character set, or for a sign bit. Consequently, a character data type may optionally represent signed values; however, for now, we will assume that character data types are unsigned, i.e. positive integer values, in the range 0-127.

      Looking at the table, note that the decimal values 0 through 31, and 127, represent non-printable control characters. All other characters can be printed by the computer, i.e. displayed on the screen or printed on printers, and are called printable characters. All printable characters and many control characters can be input to the computer by typing the corresponding keys on the keyboard. The character column shows the key(s) that must be pressed. Only a single key is pressed for a printable character; however, control characters need either special keys on the keyboard or require the CTRL key pressed together with another key. In the table, a control key is shown by the symbol '136. Thus, '136A is control-A, i.e. the CTRL key kept pressed while pressing the key, A.

      Notice that the character 'A' has the code value of 65, 'B' has the value 66, and so on. The important feature is the fact that the ASCII values of letters 'A' through 'Z' are in a contiguous increasing numeric sequence. The values of the lower case letters 'a' through 'z' are also in a contiguous increasing sequence starting at the code value 97. Similarly, the digit symbol characters '0' through '9' are also in an increasing contiguous sequence starting at the code value 48. As we shall see, this feature of the ASCII code is quite useful.

      It must be emphasized that a digit symbol is a character type. Digit characters have code values that differ from their numeric equivalents: the code value of '0' is 48, that of '1' is 49, that of '2' is 50, and so forth. The table shows that the character with code value 0 is a control character, '136@, called the NULL character. Do NOT confuse it with the digit symbol '0'. Remember, a digit character and the equivalent number have different representations.

      Besides using single quotes, it is also possible to write character constants in terms of their ASCII values in a C program, using either their octal or their hexadecimal ASCII values. In writing character constants, the octal or hexadecimal value follows the escape character, , as shown in Table 4.3. At most three octal digits or at most two hexadecimal digits are needed. Note, after the escape backslash, a leading zero should not be included in writing octal or hexadecimal numbers

      Wednesday, 13 December 2017

      C# Calculate Directory (Folder) & Sub Directory (Sub Folder) File Size

       public static long DirSize(DirectoryInfo d)
          {
              long size = 0;
              // Add file sizes.
              FileInfo[] fis = d.GetFiles();
              foreach (FileInfo fi in fis)
              {
                  size += fi.Length;
              }
              // Add subdirectory sizes.
              DirectoryInfo[] dis = d.GetDirectories();
              foreach (DirectoryInfo di in dis)
              {
                  size += DirSize(di);
              }
              return size;
          }



       String fldName1 = "~/" +   hfFileLocation.Value;
                  string path = Server.MapPath(fldName1);
      double fsize = 0.00;
      fsize = DirSize(new DirectoryInfo(path));
      Response.Write(fsize );
      double fsize_MB = 0.00;
       fsize_MB = fsize / (1024 * 1024);
      Response.Write("File Size in MB : "+fsize_MB );


      Tuesday, 12 December 2017

      How to Integrate “No CAPTCHA reCAPTCHA” in Your Website

      Note:
      First, we need an API key, so head on over to https://www.google.com/recaptcha/admin. To gain access to this page you’ll need to be logged into a Google account. You’ll be asked to register your website, so give it a suitable name, then list domains (for example ashishsrivastava.info) where this particular reCAPTCHA will be used. Subdomains (such as blog.ashishsrivastava.info) are automatically taken into account


      Code :
      Example 1 :

      Create Class
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using Newtonsoft.Json;
      /// <summary>
      /// Summary description for ReCaptchaClass
      /// </summary>
      public class ReCaptchaClass
      {
          public static string Validate(string EncodedResponse)
          {
              var client = new System.Net.WebClient();

              string PrivateKey = "Your KEY";

              var GoogleReply = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", PrivateKey, EncodedResponse));

              var captchaResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ReCaptchaClass>(GoogleReply);

              return captchaResponse.Success;
          }

          [JsonProperty("success")]
          public string Success
          {
              get { return m_Success; }
              set { m_Success = value; }
          }

          private string m_Success;
          [JsonProperty("error-codes")]
          public List<string> ErrorCodes
          {
              get { return m_ErrorCodes; }
              set { m_ErrorCodes = value; }
          }


          private List<string> m_ErrorCodes;
      }

      Using webservice

      protected static string ReCaptcha_Key = "Your Key";
          protected static string ReCaptcha_Secret = "Your Secret";

          [WebMethod]
          public string VerifyCaptcha(string response)
          {
              string url = "https://www.google.com/recaptcha/api/siteverify?secret=" + ReCaptcha_Secret + "&response=" + response;
              return (new WebClient()).DownloadString(url);
          }


      HTML PAGE
      JS
      <script src="https://www.google.com/recaptcha/api.js?onload=myCallBack&render=explicit" async defer></script>
      or
      <script src='https://www.google.com/recaptcha/api.js'></script>

      <div class="g-recaptcha" data-sitekey="6LfWVw8UAAAAAFioLPix8GJ4dJC83PC6V7Kb26Fd"></div>

      Validate using class

       string EncodedResponse = Request.Form["g-Recaptcha-Response"];
                 
                  bool IsCaptchaValid = (ReCaptchaClass.Validate(EncodedResponse) == "true" ? true : false);

                  if (IsCaptchaValid)
                  {
      }
       else
                  {
                    /
                      ScriptManager.RegisterStartupScript(this, this.GetType(), "msg", "javascript:alert('Please verify captcha');", true);
                   
                  }

      Validate using Web Service
      using Newtonsoft.Json;

      MyService objMyService = new MyService();

       string EncodedResponse = Request.Form["g-Recaptcha-Response"];
                  String json = objMyService.VerifyCaptcha(EncodedResponse);

                  dynamic stuff = JsonConvert.DeserializeObject(json);
         if (stuff.success == "True")
      {
      }
                  else
                  {
                   
                     ScriptManager.RegisterStartupScript(this, this.GetType(), "msg", "javascript:alert('Please verify captcha');", true);
                   

                  }

      SQL Server: Make all UPPER case to Proper Case/Title Case

      CREATE FUNCTION [dbo].[fnConvert_TitleCase] (@InputString VARCHAR(4000) ) RETURNS VARCHAR(4000) AS BEGIN DECLARE @Index INT DECLARE @C...