Avatar billede srofhest Nybegynder
08. januar 2009 - 12:50 Der er 13 kommentarer og
1 løsning

Mssql noob spørgsmål.

Burde det her ikke virke?

                SqlConnection Conn = new SqlConnection();
                Conn.ConnectionString = ConfigurationManager.ConnectionStrings["SupportConn"].ToString();
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = "UPDATE asp_Membership SET Firstname=@Firstname, Lastname=@Lastname, Gender=@Gender, Birthdate=@Birthdate, Phone=@Phone, Address=@Address WHERE Email=@Email";
               
//cmd.CommandText = "UPDATE asp_Membership SET (Firstname, Lastname, Gender, Birthdate, Phone, Address) VALUES (@Firstname, @Lastname, @Gender, @Birthdate, @Phone, @Address) Where Email=@Email";
                try
                {
                    Conn.Open();
                    cmd.Connection = Conn;
                    cmd.Parameters.AddWithValue("@Firstname", StrFirstname);
                    cmd.Parameters.AddWithValue("@LastName", StrLastname);
                    cmd.Parameters.AddWithValue("@Birthdate", StrBirthdate);
                    cmd.Parameters.AddWithValue("@Gender", StrGender);
                    cmd.Parameters.AddWithValue("@Phone", StrPhone);
                    cmd.Parameters.AddWithValue("@Address", StrAddress);
                    cmd.Parameters.AddWithValue("@Email", StrEmail);

                    cmd.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    Response.Write(ex.GetType());
                    Response.Write("<br />" + ex.Message);
                }

Er først ved at lære at bruge MSSql.
Avatar billede aaberg Nybegynder
08. januar 2009 - 13:00 #1
Jeg ser ikke umiddelbart nogen fejl i koden. Får du en fejlmeddelelse?

Noget helt andet er, at det er en meget dårlig ide at manipulere direkte med Membership tabellerne. Brug hellere det rammeværk der er indbygget til formålet.

Skal du f.eks. ændre e-mail adressen for den bruger som er logget på, skriver du:

MembershipUser theUser = Membership.GetUser();
theUser.Email = "new@email.com";
Membership.UpdateUser(theUser);
Avatar billede softspot Forsker
08. januar 2009 - 13:16 #2
Det skulle måske lige være denne linie:

Conn.ConnectionString = ConfigurationManager.ConnectionStrings["SupportConn"].ToString();

som jeg normalt konstruerer således:

Conn.ConnectionString = ConfigurationManager.ConnectionStrings["SupportConn"].ConnectionString;

Generelt plejer jeg at sætte connections op således (for at få ryddet op i resurserne):

using(SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SupportConn"].ConnectionString))
{
  try
  {
    Conn.Open();

    string sql = "UPDATE asp_Membership SET Firstname=@Firstname, Lastname=@Lastname, Gender=@Gender, Birthdate=@Birthdate, Phone=@Phone, Address=@Address WHERE Email=@Email";

    SqlCommand cmd = new SqlCommand(sql, Conn);
               
    cmd.Parameters.AddWithValue("@Firstname", StrFirstname);
    cmd.Parameters.AddWithValue("@LastName", StrLastname);
    cmd.Parameters.AddWithValue("@Birthdate", StrBirthdate);
    cmd.Parameters.AddWithValue("@Gender", StrGender);
    cmd.Parameters.AddWithValue("@Phone", StrPhone);
    cmd.Parameters.AddWithValue("@Address", StrAddress);
    cmd.Parameters.AddWithValue("@Email", StrEmail);

    cmd.ExecuteNonQuery();
  }
  catch (SqlException ex)
  {
    Response.Write(ex.GetType());
    Response.Write("<br />" + ex.Message);
  }
  finally
  {
    if(Conn.State != ConnectionState.Closed)
      Conn.Close();
  }
}
Avatar billede srofhest Nybegynder
08. januar 2009 - 13:42 #3
aaberg idet jeg ikke gider/kan lave min egen provider har jeg bestemt for at lægge person data i asp_Membership.
Fejlen er: Type: System.Data.SqlClient.SqlException
Message: Invalid object name 'asp_Membership'.

ja ved godt at jeg skulle lave conn.close() osv.

Softspot prøver lige din version og vender tilbage med svar.
Avatar billede srofhest Nybegynder
08. januar 2009 - 13:49 #4
Opretter nok et nyt table og linker den til asp_Membership, det vil nok være det bedste.
Avatar billede aaberg Nybegynder
08. januar 2009 - 13:54 #5
Du behøver ikke at lave egen provider for dette. Provideren støtter fuldt ud at du kan lægge alt det personspecifikke data til, som du vil. Det du skal se på, er Profile funktionaliteten.

Her er en simpel ASP.NET Profile guide:
http://www.odetocode.com/articles/440.aspx
Avatar billede srofhest Nybegynder
08. januar 2009 - 13:58 #6
Ja, det ved jeg skam godt.
Men den vælger jeg igen ikke at bruge pga. måden den lagrer dataene.
Avatar billede srofhest Nybegynder
08. januar 2009 - 14:06 #7
Samme fejl selvom jeg bruger Softspot's version (brugen den dog alligevel idet det jo nok er den mest korrekte måde at lave en connection).
Avatar billede aaberg Nybegynder
08. januar 2009 - 14:10 #8
Den fejlmeddelelse betyder, at der ikke er en tabel der hedder asp_Membership i din database.
Avatar billede srofhest Nybegynder
08. januar 2009 - 14:12 #9
argh, den hedder jo også aspnet_Membership.
Avatar billede aaberg Nybegynder
08. januar 2009 - 14:13 #10
Tjek at Initial Catalog er sat korrekt i din connectionstring.
Avatar billede aaberg Nybegynder
08. januar 2009 - 14:14 #11
Nåh ja, klart! :-D Nogen gange kan man stirre sig blind på de mest åndsvage problemer.
Avatar billede srofhest Nybegynder
08. januar 2009 - 18:16 #12
Ja, det var ski ikke lige min første tanke at det var en lille stavefejl.

men det var jo ikke spild, lærte hvad "Invalid object name" betyder :D
Avatar billede srofhest Nybegynder
12. januar 2009 - 10:12 #13
læg svar for point.
Avatar billede aaberg Nybegynder
12. januar 2009 - 10:17 #14
svar
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