Załóżmy że mam tabele z dowma kolumnami ID, imie. Chce zrobić dodawanie nowego rekordu poprzez wpisanie samego imienia, a ID automatycznie samo bedzie ustawiać się na kolejną wartość. W tym celu chce:
- pobierać aktualnie największą wartość ID przypisać do zmiennej, zwiekszyć o 1 i zapisać nową wartość z podanym przeze mnie imienim.
PROBLEM polega na tym, że nie potrafie pobrać wartości typu Int (z bazy danych).
W przypadku stringów wszystko działa robiąć coś takiego:
pomijam połączenie z bazą
...
String name;
...
cmd1 = new SqlCommand("select imie from Wydatki where ID=1", conn);
...
name = cmd.ExecuteScalar().ToString();
w tym przypadku oczekiwana wartość jest przypisana do name zgodnie z oczekiwaniami.
w przypadku pobrania inta próbowałem używac metod GetInt32 albo zapisanie jako string i konwersja jednak bez rezultatu:
String sMaxID;
Int32 MaxID;
using (SqlDataReader reader = cmd1.ExecuteReader())
{
reader.Read();
// sMaxID = reader["Liczba"].ToString();
MaxID = reader[0].GetType(); //reader.GetInt32(0);//Convert.ToInt32(sMaxID, 10);
}
Nie wiem dlaczego to nie działa, wie ktoś w czym może być problem ?
Mam pomysł jako ostateczność, że zmienie w tabeli typ ID z inta na string, czyli pobiore bez problemu->skonwertuje na int->zinkrementuje->skonwertuje na string-> zapisze. Ale chce tego uniknąć.