Witam Mam ten kod, który odczytuje dane z SQL DB.Używanie nazwy kolumny podczas korzystania z SqlDataReader.IsDBNull
Nie wiem, w jaki sposób należy go edytować, aby móc używać oryginalnej nazwy kolumny, a nie indeksu kolumny.
string query = "SELECT * FROM zajezd WHERE event='" + thisrow+ "' AND year='" + klientClass.Year() + "'";
SqlCommand cmd= new SqlCommand(query, spojeni);
spojeni.Open();
SqlDataReader read= cmd.ExecuteReader();
if (read.Read())
{
maskedTextBox2.Text = read.IsDBNull(24) ?
string.Empty :
read.GetDateTime(24).ToString("MM/dd/yyyy");
Z góry dziękuję.
Więc używasz SELECT *, a kolumna, której szukasz, jest 24. kolumną? To jest straszny sposób kodowania - co się dzieje, gdy ktoś zmienia tabelę (np. Dodaje kolumnę między 1-23)? Może pojawić się błąd lub może się zdarzyć, że uzyskasz inną kolumnę daty i nie zostanie ona zauważona. Czy podoba Ci się również wstrzyknięcie SQL? Użyj sparametryzowanych zapytań. Tak dynamiczny SQL sprawia, że każdego dnia jest tak wiele exploitów do wstrzyknięć SQL w Internecie. –
@NathanKoop w edycji dodano klamrę zamykającą. Prawdopodobnie masz rację, ale jak widać z poniższych komentarzy, daje to bardzo konkretne znaczenie zapytaniu stosowanemu przez PO. Jeśli PO potrzebuje tylko jednej kolumny, wówczas możliwe byłoby lepsze podejście. – Steve
@Steve przepraszam za opóźnioną odpowiedź. Nie widzę komentarzy, do których się odwołujesz, ale usunąłem kręcone. Dla mnie nie ma to wielkiego znaczenia, jeśli tak jest, czy nie :-) –