Salve, vorrei fare una differenza , ma visual studio mi da errori es:
rdr è un odbcdatareader.
if (rdr["_email"] <> (txtEmail.Text)) {
}
else{
Mi dice: Errore 5 '>' è un termine non valido nell'espressione
vorrei fare cosi , perchè devo scrivere un vecchio codice che era in asp classic ma ora in .net.
Quello che vorrei fare è se le email risulta uguale modifica solo i campi richiesti , ma se e diversa modifica i campi e l'email.
in asp 3 , lo so fare ma in dot.net no.
come si può fare per non venire l'errore forse io sbaglio qualche sintassi.
mi potete aiutarmi.
Scusa la pignoleria ma vorrei segnalare alcune imprecisioni:
L'operatore per controllare se due stringhe sono diverse è != e non <>. Accertati anche se è necessario effettuare un cast a string sul tipo ritornato da rdr["_email"].
In ogni caso, se ti capitano spesso problemi di questo tipo, ti consiglio caldamente la lettura di un buon libro sul linguaggio C#.
Infine alcune note un pò polemiche ma che ritengo importanti:
Grazie.
Saluti e buon lavoro
-----------------------------------------Angella AndreaMicrosoft Certified Technology Specialisthttp://www.angellaa.it/
ok, però adesso mi da questo errore:
System.InvalidOperationException: Tentativo non valido di chiamare Read con reader chiuso. in System.Data.Odbc.OdbcDataReader.Read() in ASP.profilo_email_aspx.btnEdit_Click(Object sender, EventArgs e) in d:\wwwroot\luigiamorfini\profilo_email.aspx:riga 66
e il codice:questo:
protected void btnEdit_Click(object sender, EventArgs e) { try { OdbcConnection conn = new OdbcConnection(connectionString); string SQL = "SELECT * FROM users WHERE UsersId=?"; conn.Open(); OdbcCommand cmd = new OdbcCommand(SQL, conn); cmd.Parameters.AddWithValue("?", "" + Session["UsersId"] + ""); OdbcDataReader rdr = cmd.ExecuteReader(); if (rdr.Read()) { { if (rdr["_email"].ToString() != txtEmail.Text) { string sSQL = "UPDATE users set _username=?,"; sSQL = sSQL + "_email=?,"; sSQL = sSQL + "nl=?"; sSQL = sSQL + "WHERE UsersId=?"; OdbcCommand cmd_update = new OdbcCommand(sSQL, conn); cmd_update.Parameters.AddWithValue("?", txtUsername.Text); cmd_update.Parameters.AddWithValue("?", txtEmail.Text); cmd_update.Parameters.AddWithValue("?", ddNL.SelectedItem.Text); cmd_update.Parameters.AddWithValue("?", "" + Session["UserId"] + ""); cmd_update.ExecuteNonQuery(); conn.Close(); } else { string sSQLu = "UPDATE users set _email=? WHERE UsersId=?"; OdbcCommand cmd_update = new OdbcCommand(sSQLu, conn); cmd_update.Parameters.AddWithValue("?", txtEmail.Text); cmd_update.Parameters.AddWithValue("?", "" + Session["UserId"] + ""); cmd_update.ExecuteNonQuery(); conn.Close(); } } } } catch (System.Exception exc) { lblMsg.Text = "" + exc.ToString() + ""; } }
Mi dici come mai?.
grazie.
scusa, retifico era solo scaduta la sessione.
ora funziona,
protected void btnEdit_Click(object sender, EventArgs e) { try { OdbcConnection conn = new OdbcConnection(connectionString); string SQL = "SELECT * FROM users WHERE UsersId=?"; conn.Open(); OdbcCommand cmd = new OdbcCommand(SQL, conn); cmd.Parameters.AddWithValue("?", "" + Session["UserId"] + ""); OdbcDataReader rdr = cmd.ExecuteReader(); if (rdr.Read()) { { if (rdr["_email"].ToString() != txtEmail.Text) { string sSQLu = "UPDATE users set _email=? WHERE UsersId=?"; OdbcCommand cmd_update = new OdbcCommand(sSQLu, conn); cmd_update.Parameters.AddWithValue("?", txtEmail.Text); cmd_update.Parameters.AddWithValue("?", "" + Session["UserId"] + ""); cmd_update.ExecuteNonQuery(); } else { string sSQL = "UPDATE users set _username=?,"; sSQL = sSQL + "_email=?,"; sSQL = sSQL + "nl=?"; sSQL = sSQL + "WHERE UsersId=?"; OdbcCommand cmd_update = new OdbcCommand(sSQL, conn); cmd_update.Parameters.AddWithValue("?", txtUsername.Text); cmd_update.Parameters.AddWithValue("?", txtEmail.Text); cmd_update.Parameters.AddWithValue("?", ddNL.SelectedItem.Text); cmd_update.Parameters.AddWithValue("?", "" + Session["UserId"] + ""); cmd_update.ExecuteNonQuery(); } } conn.Close(); } } catch (System.Exception exc) { lblMsg.Text = "" + exc.ToString() + ""; }