Dealing with DataTables
The nice thing about having someone join in a junior position at work is that it gives you a lot to blog (or repeat yourself) about. We've discussed a lot of subjects this week. One; was them being burned by some terrible old code that involved DataTables. There were a series of enormous (and broken) methods that accessed DataRows directly using the integer column index. There was a large amount of calculations directly on these items but the reason behind any of it was meaningless. The underlying Stored Procedure had changed causing an invalid cast exception.
In light of this, I thought it might be nice to go through a bit of a process of some different options of still using ado.net and why you might choose the options what the pitfalls were. Staying on topic, we didn't opt to use an SqlDataReader which would probably be the next option to go for considering how much faster that it. We talked about speed over maintainability, but I think even when we were programming on the compact framework on some fairly basic devices we still used string column references just for sanity. Some people use Enums to access the columns so that you can still stick with the ints but it maintains some meaning, my answer to that though is bog off. It still causes problems if someone changes the bloody schema underneath and if you need to squeeze the performance there, you have bigger problems.
Anyway! These is the code we discussed. In VB.NET mainly because, er why not. The original discussion was in C# but I just fancied doing it in VB.NET too.