WebDeveloper - sqldatasource.SelectCommand - jak użyć?

0

Po pierwsze dzień dobry, bo to mój pierwszy post tutaj :)

Mam do zrobienia mały projekt na uczelni i mam jedno pytanie - jak użyć polecenia sqldatasource.selectcommand ?
mianowicie chcialbym wartosc z niego otrzymana zapisac do zmiennej int, ale za cholere nie moge do tego dojsc.

protected void Button1_Click(object sender, EventArgs e)
    {      
        String imie = this.TextBox1.Text;
        String nazwisko = this.TextBox2.Text;
        String klasa = this.DropDownList1.Text;
        String login = User.Identity.Name;
       
        //int id= this.SqlDataSource1.SelectCommand="SELECT MAX(id) from uczen";

        System.Diagnostics.Debug.WriteLine(this.SqlDataSource1.SelectCommand="SELECT MAX(id) from uczen");
       
        id=id+1;
        this.SqlDataSource1.InsertCommand = "INSERT INTO Uczen(ID,imie,nazwisko,klasa,login) VALUES ('" + id + "','" + imie + "','" + nazwisko + "','" + klasa + "','" + login + "')";
        this.SqlDataSource1.Insert();
        }

Chodzi o te dwie pogrubione linijki, kiedy w ten sposob chce wywolac polecenie, to w outpucie zamiast wartosci int otrzymuje tekst "SELECT MAX(id) from uczen". Polecenie insert dziala poprawnie i myslalem, ze ich skladnia bedzie podobna a tu jednak zonk ;<

Z gory dziekuje za pomoc:)

0

Select w SqlDataSource służy raczej do ustalenia zapytania wyciągającego wiersze z danej tabeli przy każdym użyciu tego źródła, a nie do jednorazowego pobrania danych.

Nie wiem jak to zrobić przy użyciu klasy SqlDataSource. Do tego zdania raczej zastosowałbym klasę SqlCommand i metodę ExecuteScalar.

0

Zamiast:
int id= this.SqlDataSource1.SelectCommand="SELECT MAX(id) from uczen";

Zrób tak:
this.SqlDataSource1.SelectCommand="SELECT MAX(id) from uczen";

To przypisze zapytanie do SqlDataSource1. A zapytanie wywołasz za pomocą metody Select z SqlDataSource i jego wynik zwrócisz do DataView:
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
Z DataView wyciągniesz interesującą Cię wartość:
int maxId = (int)dv.Table.Rows[0][0];

Zobacz przykład w dokumentacji:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sqldatasource.select.aspx

0

Dziękuję Wam bardzo za pomoc, rozwiązanie Igora w 100% daje mi to czego potrzebowałem :)
jeszcze raz wielkie dzięki!

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