Wednesday, October 10, 2012

How to get total number of tables in a database in SQL?

It might happen that you will have to start working on a big database, someday. So, just out of curiosity if you ever want to find total number of tables that are in your table you can use this simple query:

SELECT COUNT(*) as TotalTables FROM sys.tables WHERE type in ('u') 

Of course, first you have to connect to your database. Hope it helps.

Thursday, October 4, 2012

How to get country, city, language for an ip address, in Asp.Net?

When you want to get location information about a client that visits your website according to its ip address you can use a third party service that offers this info in real time or you can use free services, which might not work 100% accurate. However, no matter which service you shall choose you can use the same workflow as I used in my project example.

I created a class that will be used to deserialize json response from api service from
 private struct GeoIPResponse
//this is the response I get
        public string IP;
        public string continentCode;
        public string continentName;
        public string countryCode2;
        public string COUNTRY;
        public string countryCode3;
        public string countryName;
        public string regionName;
        public string cityName;
        public string cityLatitude;
        public string cityLongitude;
        public string countryLatitude;
        public string countryLongitude;
        public string localTimeZone;
        public string localTime;
then I defined some needful methods: 

    /// Returns Client Ip Address
    static public string ClientIpAddress
            string _clientIPAddress = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (!string.IsNullOrEmpty(_clientIPAddress))
                string[] ipRange = _clientIPAddress.Split(',');
                _clientIPAddress = ipRange[ipRange.Length - 1];
                _clientIPAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            return _clientIPAddress;


    public string _WebRequest(string strURL)
        String strResult;
        WebResponse objResponse;
        WebRequest objRequest = HttpWebRequest.Create(strURL);
        objRequest.Method = "GET";

        objResponse = objRequest.GetResponse();
        using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
            strResult = sr.ReadToEnd();
        return strResult;

and finally this is the way I used a service from :
protected void Page_Load(object sender, EventArgs e)
        txtMessage.Text = "";
        string Result = _WebRequest("" + ClientIpAddress + "&full=true");

        txtMessage.Text = Result;
        JavaScriptSerializer jss = new JavaScriptSerializer();
        var clientGeoLocation = jss.Deserialize < GeoIPResponse >(Result);

        lblMessage.Text = "
Your short details: " + "Country: " + clientGeoLocation.COUNTRY + ", CountryCode 2: " + clientGeoLocation.countryCode2 + ", CountryCode 3: " + clientGeoLocation.countryCode3 +
            ", TimeZone: " + clientGeoLocation.localTimeZone;

Wednesday, October 3, 2012

How do you test if a string is null or empty?

Today as I was studying something related to Asp.Net I got to an example where I had to test if a string variable is null or just an empty string. So, which are the possibilities and which is the most efficient?

  • if(myString == String.Empty)
  • if(myString == "")
  • if(myString.Length == 0) - this could throw an exception if myString is null
  • I also found this comparison: if( String.Equals(myString, String.Empty) )
  • and of course method IsNullOrEmpty introduced in .Net Framework 2:
    if(string.IsNullOrEmpty(myString)) which is said to be the most efficient.
Now, which methods do you use when comes to test if a string has a value or not? You are invited to write them as comments :) Of course that no matter which one of the methods above you choose won't slow down to much the performance of your application, but is good to build a good practice for future projects, isn't it?