Pobieranie warości z bazy danych.

0

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ąć.

1
  1. Dlaczego nie chcesz, aby ID było nadawane automatycznie przez bazę?
  2. Spróbuj: int oldId = Convert.ToInt32(cmd.ExecuteScalar());

1 użytkowników online, w tym zalogowanych: 0, gości: 1