Zamiast wplatać w zapytania bezpośrednio stringi używaj parametrów tak jak to wspomniał kolega wyżej. Te zapytanie to tak jak powiedział abrakadaber to jest taki potworek, że nawet ciężko mi ogarnąć go, strasznie ciężko się to czyta, a w razie błędów bardzo trudno jest go znaleźć. Pomyśl, że za kilka miesięcy będziesz chciał coś zmienić w tej aplikacji i zobaczysz takie zapytanie i kompletnie się pogubisz - wierz mi :) Ale ogólnie chodzi, żeby zamiast takiego zapytania:
DBControl.ExecuteNonQuery("INSERT INTO " + this.nameTable + " (" +
this.GetColumnNames() + ") VALUES (" + this.GetValuesNames(parameter) + ")");
((IdentifyData)obj).ID = Convert.ToInt32(DBControl.ExecuteScalar(@"Select max(id) from " + this.nameTable));
zamiast np:
+ this.nameTable +
używać parametrów:
cmd.Parameters.AddWithValue("@nameTable", this.nameTable);
Wtedy w zapytaniu masz takie coś:
"INSERT INTO @nameTable
Jest to bezpieczniejsze, gdyż nie przekazujesz do zapytania bezpośrednio wartości, tylko poprzez parametr, no i ładniej wygląda same zapytanie :)
Aczkolwiek używaj ORM-a, super elastyczność, uniwersalność (nie ma znaczenia baza) i gdybyś chciał złączyć kilka tabel w zapytaniu, to zobaczysz wtedy czemu to jest przyjemność :)