skip to Main Content

Finds of the Week – February 17, 2008

.NET

Software and Tools

  • Looking for a free sharepoint host? You can get a free sharepoint account with 5MB disk space, 5 users from Frontpages Web Hosting Network. Link is here.

Gadgets

  • The HD format war is over. I am waiting for Blu-ray players go go down to the $150 range before I’ll get one.

And Now, Something A Little Different

Put GetOrdinal Method to Good Use

How often do you see DataReader code that looks like this?

using (IDataReader dr = cmd.ExecuteNonQuery())
{
    while (dr.Read())
    {
        int orderId = dr.GetInt32(0);
        string customerId = dr.GetString(1);
        int employeeId = dr.GetInt32(2);
        DateTime orderDate = dr.GetDateTime(3);
        double freight = dr.GetDouble(4);

        // do stuff
    }

    dr.Close();
}

If that looks like your code, you are not alone :-). Try searching codesearch.google.com for the following:

lang:c# (reader|dr)\.GetInt32\(

codesearch google

With the above code, anytime the order of columns in the SQL statement or stored procedure changes, the code is broken. And if you have lots of columns to read from, it’s a real nightmare to maintain the indexes.

The next time you write another DataReader loop, consider doing it this way instead:

using (IDataReader dr = cmd.ExecuteNonQuery())
{
    int ORDER_ID = dr.GetOrdinal("OrderID");
    int CUSTOMER_ID = dr.GetOrdinal("CustomerID");
    int EMPLOYEE_ID = dr.GetOrdinal("EmployeeID");
    int ORDER_DATE = dr.GetOrdinal("OrderDate");
    int FREIGHT = dr.GetDecimal("Freight");

    while (dr.Read())
    {
        int orderId = dr.GetInt32(ORDER_ID);
        string customerId = dr.GetString(CUSTOMER_ID);
        int employeeId = dr.GetInt32(EMPLOYEE_ID);
        DateTime orderDate = dr.GetDateTime(ORDER_DATE);
        double freight = dr.GetDouble(FREIGHT);

        // do stuff
    }

    dr.Close();
}

Using GetOrdinal makes the code much more readable and maintainable. You are calling GetOrdinal just once for each column, any performance penalty is insignificant compared to the benefits. Be careful not to put the GetOrdinal code inside the while block as that will unnecessarily slow you down (about 3% according to this article).

kick it on DotNetKicks.com

Finds of the Week – February 3, 2007

.NET

Software/Tools

Windows Mobile – Pocket PC

  • Looks like Google has fixed the problems that were plaguing Gmail IMAP on Windows Mobile devices. Read the blog entry from the official Gmail Blog here. And here’s a related article from PC World: Google fixes Gmail IMAP problem on Windows Mobile.
  • Viigo is a free RSS reader for Windows Mobile. I have not really used it that much but it seems to work ok.

    Viigo RSS Reader for Windows Mobile 

  • Skyfire is another promising Windows Mobile browser currently in private beta. Via Engadget.

  • If you have a Samsung Windows Mobile device, try the included PicSel browser. Here’s a review of Picsel browser, with a lot of useful how-to information included. By Tam Hanna.

And Now, For Something A Little Different

Nano

Finds of the Week – January 27, 2008

.NET Programming, C#

Powershell

Software and Tools

Windows Mobile / Pocket PC

Something Different

Finds of the Week – January 20, 2008

.NET, C#, Programming

Software and Tools

  • Jeff Atwood shared the Top Five Browser Shortcuts Everyone Should Know. I didn’t know about the middle mouse button browser shortcut. Very useful.
  • Reading Nazmul Idris’ post on Microsoft OneNote 2007 prompted me to try it myself…. and I loved it. It’s a great application to keep track of notes, journal entries, work logs, etc. It’s going to be an essential app for me from now on.

    OneNote 

    I especially like offline mode support for USB flash drives. You can keep your Notebooks on a flash memory card. OneNote automatically synchronizes its local cache with the flash card when the card is inserted. When not inserted, you can still work on the local cached copy.

    What I don’t like: no VBA macro support. One of the first thing I tried was pressing ALT+F11 to bring up the VBA IDE… nothing happened. A quick search in Online Help confirmed my sinking feeling: no VBA support. Supposedly, you can write add-ins.

Windows Mobile/Pocket PC

Gadgets

Something different

  • Watch dolphins blowing circles made of air bubbles.

Finds of the Week – December 13, 2008

.NET, C#, Programming

Software & Tools

  • Cpu-z is a cool little freeware application that provides information about your CPU. Here we are looking my brand new quad-core CPU.

    Cpu-z

  • Service Pack 1 Release Candidate for Windows Vista is available for public download. Maybe I’ll install it.
  • If you need a folder/file comparison/diff tool, try the SourceGear’s DiffMerge, now free. Via WebLog of Ken Cox.
  • Windows Vista has a very useful but hidden Copy as Path feature (Via Luke Foust). In Windows XP, the Send To X Powertoy used to provide this feature.

    Windows Vista Copy as Path

And Now, Something Different

  • I enjoy doing graphics design now and then. Here’s a cover I did this past weekend for the Richmond Vietnamese Association’s annual Tet (lunar new year) magazine issue (click image for full-size):

    image description

How to Open Containing Explorer Folder in Visual Studio

I think this is useful and not well known enough to warrant its own blog post.

Did you know that there is a Visual Studio command called File.OpenContainingFolder? Asmita A Wankhede wrote about it, but he left a few important details out.

By default, this command does not have a shortcut, so you would have to assign one to it (try CTRL+SHIFT+ALT+O). Also, the "item" that this command works on is the currently opened item in the editor, not the selected item in the Solution Explorer. See my Visual Studio tips article for instructions on how to create new shortcuts (section 3 – Make New Shortcuts).

File.OpenContainingFolder

This works with both Visual Studio 2005 and 2008.

kick it on DotNetKicks.com

Finds of the Week – January 6, 2008

It’s 2008. Happy New Year!

Tips and Tricks

  • I can’t believe I didn’t know about this Visual Studio command before: File.OpenContainingFolder. Asmita A Wankhede mentioned it, but he left a few important details out. By default, this command does not have a shortcut, so you would have to assign one to it (try CTRL+SHIFT+ALT+O). Also, the "item" that this command works on is the currently opened item in the editor, not the selected item in the Solution Explorer. See my Visual Studio tips article for instructions on how to create new shortcuts (section 3 – Make New Shortcuts).
    File.OpenContainingFolder shortcut 
  • Aaron Lerch shared a tip on how to use Powershell to perform search-and-replace on an entire folder hierarchy.

.NET, C#, Programming

Software And Tools

  • Did you know that something called Robocopy (short for Robust File Copy, not Robot Copy), is the new XCOPY? It’s a standard tool in Windows Vista and is also available as part of the Windows Resource Kit. Via Don Box’s Spoutlet on Pluralsight.

    robocopy

  • I recently tried and liked GhostDoc very much. It’s a free Visual Studio add-in to help write XML documentation comments. Roland Weigelt wrote a nice intro article on GhostDoc on DotnetSlackers here.
  • SyncBackSE is a great folder synchronization utility. It has tons of features… maybe even a little bit on the bloated side. It costs $30 for a single license. If you just want something simple, Microsoft’s free SyncToy may do the trick for you.

    SyncBackSE 

Gadgets

  • From CES, it looks like Blu-ray will be the winner of the HD format war. No, the war is not completely over, but this was the landing at Normandy… so to speak. The loss is just too great for the HD-DVD camp to recover.

And Now, Something Different

Finds of the Week – December 30, 2007

I have been a little bit busy this past week enjoying the holidays and playing some of my old favorite games like Rome Total War and The Elders Scrolls IV: Oblivion.

No big news in .NET world this week. We are still waiting for the .NET framework source code to be released.

Here is a screenshot from the game Rome Total War:

Rome Total War

And this is from Oblivion:

The Elder Scrolls IV: Oblivion

Happy New Year!

Back To Top