Cześć,
zastanawiałem się ostatnio nad pewnym problemem:
Mamy sobie np. klasę cCar i dodatkowo w bazie danych tabelę Cars.
Ta tabela Cars ma pola Index_Car oraz Name.
W klasie cCar mam np. zapytanie "SELECT Name FROM Cars WHERE Index_Car = 1"
To zapytanie w tej klasie działa i wszystko jest pięknie.
Ale pewnego dnia zmieniam wewnętrz bazy danych nazwę pola Name na Nazwa
W tym momencie zapytanie wewnątrz klasy przestaje się wykonować poprawnie, ponieważ w tabeli Cars nie ma pola Name.
Kod oczywiście się kompiluje, bo kompilatora nie interesuje co jest między cydzysłowami.
Taki błąd jest łatwo wychwycić, gdy mamy mały programik.
Jednak przy dużej liczbie tabel przestaje już być śmiesznie.
Częściowym rozwiązaniem problemu jest wyprowadznie nazw pól tabel do np stałych i sklejanie w kodzie takiego zapytania np:
"SELECT " + CONST_Name + " FROM " CONST_Cars WHERE " + CONST_Index_Car + " = 1"
Niestety przy większych zapytaniach takie cuda są koszmarne w obsłudze i pisaniu.
Teoretycznie można też wszystkie zapytania wyrzucić do bazy danych w postaci sparametryzowanych funkcji i ewentulanie w ramach testów odpalać całą pulę takich zapytań sprawdzając, czy się prawidłowo wykonują.
Moje pytanie brzmi:
czy istnieją jakieś gotowe rozwiązania wspomagające zarządzanie kodem SQL wewnątrz kodu programu? Jak ludzie dają sobie radę z tym problemem.
pzdr