A colleague of mine had this interesting problem today: OdbcDataAdapter ORA-01000. When querying an Oracle database via ODBC from C# using the following code, an Oracle error ORA-01000: maximum open cursors exceeded occured after a certain number of iterations (300 in our case): static void Main(string[] args) { var connectionString = "DSN=MYDB;UID=user;PWD=pass"; [...]
LINQ rules!
Here’s an example of a small refactoring I did today using LINQ’s features in C#. I had this method that simply constructs a WHERE clause for a SQL statement using an IList of table prefixes: private string getWhereClauseForTablePrefixes(IList<String> tablePrefixes) { var where = ""; if (tablePrefixes.Count > 0) { [...]
DBDiff: a C# program to compare two databases
In one of my current projects I have to import an Oracle database dump into a development database every two weeks. But more than once there were tables missing, columns have been changed, or indices have been removed in the new dump. Of course, that led to problems with the programs that used the database. [...]
How to mock System.Net.Sockets.Socket
In one of my C# projects I wanted to add tests for a class that uses System.Net.Sockets.Socket. The problem was that the class (FTPConnection) depended directly on Socket as shown in the following class diagram. So I had to find a way to get rid of this direct dependency and mock the Socket class to [...]
Java ist auch eine Insel
Soeben ist meine neue Amazon-Bestellung eingetroffen: Java ist auch eine Insel. Damit werde ich mich in nächster Zeit in Java einarbeiten. Das ist auch dringend nötig, da meine Projektgruppe im Rahmen der Programmieraufgabe im Masterstudiengang Software-Engineering an der Ohm-Hochschule Nürnberg sich für diese Sprache entschieden hat. Mein Team muss die Fertigungsplanung (Wegfindung und -optimierung) einer [...]
C#: Klassenübergreifendes Logging
Heute habe ich mir ein paar Gedanken zum Thema Logging mit C# gemacht. Für das umfangreiche Projekt, an dem ich zur Zeit arbeite, musste ich eine einfache und flexible Möglichkeit finden, verschiedene Meldungen (Hinweis, Erfolg, Fehler) zu loggen, ohne die zahlreichen Klassen von einer bestimmten Implementierung abhängig zu machen. Meine Lösung hierzu sieht wie folgt [...]
C#: Verwendete XML-Namespaces aus XML-Dateien auslesen
Lange habe ich gesucht und doch keine Antwort auf die (meiner Meinung nach einfache) Frage gefunden, wie man mit C# alle in einer XML-Datei verwendeten XML-Namespaces auslesen kann. Damit meine ich eine simple Liste mit Präfixen und den diesen zugeordneten Namespaces, wie sie im Wurzelelement der XML-Datei definiert werden. Es gibt zwar den XmlNamespaceManager, aber [...]
AntMe!
Wer hätte gedacht, dass es soviel Spaß macht, ein kleines Ameisenvölkchen zu “programmieren”? Das lustige Code-Projekt AntMe! von Microsoft lädt jeden gewillten Teilnehmer dazu ein, mittels der frei verfügbaren Programmierumgebung Visual Studio Express in C# einen Haufen virtueller Ameisen mit künstlicher Intelligenz auszustatten. Das ist sogar recht einfach, da sich die Programmierung (zu Beginn) lediglich [...]
Iteration über Enumerations in C#
In meinem C#-Programm hatte ich das Problem zu lösen, Strings in Typen eines Enums umzuwandeln. Z.B. habe ich eine Enumeration GeschlechtTyp definiert, die wie folgt aussieht: /// <summary> /// Mögliche Geschlechter. /// </summary> public enum GeschlechtTyp { /// <summary> /// Männer. /// </summary> m, /// [...]
C#: Gleitkommapräzision und Rundung
Was für ein Titel! Aber es ist durchaus einen Beitrag wert, sich mit der Präzision und Rundung von Gleitkommazahlen in C# auseinanderzusetzen. Gerade, wenn man (wie ich) an einem finanzmathematischen Programm schreibt, kann es sonst sehr schnell zu Problemen bzw. seltsamen Ergebnissen kommen. Da ich diese Erfahrung heute machen durfte (und ca. 50 Variablen von [...]



