Avatar billede banielsen Nybegynder
21. april 2007 - 23:05 Der er 2 kommentarer og
1 løsning

Attribut bliver ikke brug ved update i database

Hej Eksperter

Dette spørgsmål lægger sig lidt op af mit problem i: http://www.eksperten.dk/spm/774394. Men jeg har her lavet et mere simpelt eksempel samt fundet problemet - men ikke løsningen :-)

Jeg har en webform som blot skal opdaterer en værdi i en database.
Hvis jeg ligger "nr" (som er nøglen i update-funktionen) som en attribut på klassen er det som om at den ikke slå igennem i mit update-statement. Kode følger herunder:

protected System.Web.UI.WebControls.TextBox TextBox1;
        protected System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
        protected System.Data.SqlClient.SqlCommand sqlSelectCommand1;
        protected System.Data.SqlClient.SqlCommand sqlUpdateCommand1;
        protected System.Data.SqlClient.SqlConnection sqlConnection1;
        protected System.Web.UI.WebControls.Button Button1;

        protected int nr;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            if (!IsPostBack)
            {
                this.nr = 1;
                TextBox1.Text = getNavn();
                // Put user code to initialize the page here
            }
        }

private void Button1_Click(object sender, System.EventArgs e)
        {
            aendreNavn();
        }

        private string getNavn()
        {
            sqlSelectCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Nr", System.Data.SqlDbType.BigInt, 8, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Nr", System.Data.DataRowVersion.Current, nr));

            sqlConnection1.Open();
            string navn = sqlSelectCommand1.ExecuteScalar().ToString();
            sqlConnection1.Close();

            return navn;
        }

        private void aendreNavn()
        {
            //int nr = 1;
            sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Nr", System.Data.SqlDbType.BigInt, 8, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Nr", System.Data.DataRowVersion.Current, nr));
            sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Navn", System.Data.SqlDbType.VarChar, 50, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Navn", System.Data.DataRowVersion.Current, TextBox1.Text));

            sqlConnection1.Open();
            int hest = sqlUpdateCommand1.ExecuteNonQuery();
            sqlConnection1.Close();
        }

I overstående eksempel slår updaten ikke igennem. Men hvis jeg "inkommenterer "//int nr = 1;" så virker det fint. Så det er lige så snart at "nr"-variabler kun kommer som attribut. Nogle som kan hjælpe.

Og på forhånd tak :-)
Avatar billede snepnet Nybegynder
22. april 2007 - 09:26 #1
Du sætter kun nr til 1 når brugeren ser siden første gang, så den vil initialiseres til 0 på alle efterfølgende requests.
En attribut er for øvrigt f.eks. sådan en her:
[Serializable]
public class SomeClass
{
  ...
}
Altså det i []

Mvh
Avatar billede banielsen Nybegynder
22. april 2007 - 11:09 #2
Ah... fremragende og selvfølgelig.... tusind tak for det.
Smid et svar og der er point :-)
Du kan også bare smide et svar i http://www.eksperten.dk/spm/774394 så får du også dem :-)
Avatar billede snepnet Nybegynder
22. april 2007 - 18:42 #3
Jeg svarer bare her - har ikke set det andet :o)
Mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester