Aggiornare i dati nel database di SQL Server

Ho la registrazione come la mia tabella di database. Voglio aggiornare il mio informazioni chiave dall’utente nel mio database di SQL Server. Ma non funziona, non si verificano errori, ma i dati chiave nel non aggiornare il mio database. Per favore qualcuno mi aiuti se qualcosa di sbagliato con il mio codice? Grazie.

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True");

    SqlCommand cmd = new SqlCommand("UPDATE registration SET username = @username, password = @password, retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno", con);

    con.Open();

    cmd.Parameters.AddWithValue("@username", TextBoxUsername.Text);
    cmd.Parameters.AddWithValue("@password", TextBoxPassword.Text);
    cmd.Parameters.AddWithValue("@retypepassword", TextBoxRPassword.Text);
    cmd.Parameters.AddWithValue("@gender", DropDownListGender.Text);
    cmd.Parameters.AddWithValue("@birth", DropDownListDay.Text);
    cmd.Parameters.AddWithValue("@address", TextBoxAddress.Text);
    cmd.Parameters.AddWithValue("@city", TextBoxCity.Text);
    cmd.Parameters.AddWithValue("@country", DropDownListCountry.Text);
    cmd.Parameters.AddWithValue("@postcode", TextBoxPostcode.Text);
    cmd.Parameters.AddWithValue("@email", TextBoxEmail.Text);
    cmd.Parameters.AddWithValue("@carno", TextBoxCarno.Text);

    cmd.ExecuteNonQuery();

    con.Close();

    if (IsPostBack)
    {
        Response.Redirect("UpdateSuccess.aspx");
    }

Dopo che ho fare clic su conferma, in qualche modo, solo aggiornare la mia colonna gender che da maschio a femmina, altri colonna di dati che non si aggiorna.

  • Qual è la chiave primaria di una tabella? Si può aggiungere un try/catch e vedere se c’è un’eccezione?
  • Come funziona il comando simile a quando viene inviato al server? Se avete la versione completa, quindi utilizzare il profiler per esaminare ciò che è stato inviato al server.
  • Che sembra rendere zero senso. Seriamente. Non c’è nessun AGGIORNAMENTO SUL nome utente che hai anche nella clausola where. Set nome=where nome=a? Non aggiornare mai le chiavi primarie. Beh, anche noi dare il messaggio di errore.
  • Il mio programma è possibile aggiornare le informazioni già. Perché ho scoperto nella mia pagina di caricamento di eseguire la lettura e per ottenere i dati dal database nella casella di testo, dopo che io comando la lettura dei dati al caricamento della pagina, il mio modifiche apportate possono essere aggiornata correttamente. Ma come posso fare io che si desidera che le informazioni da visualizzare nella casella di testo nello stato iniziale e modifiche apportate dopo di che?
  • Tutti gli eventi del controllo di fuoco prima che l’evento form_load fuoco. Così si dovrebbe creare un hiddenfield per contenere l’id univoco. L’aggiornamento dovrebbe essere fatto nell’evento click e il caricamento dovrebbe essere fatto in form_load quando non è un postback. Se il hiddenfield non è impostato, questo è un nuovo ingresso. Creare un id univoco e fare un INSERTO. Se hiddenfield è impostato, fare un AGGIORNAMENTO.
  • Grazie per avermi”.
  • A seconda della versione di SQL Server che si sta utilizzando, si potrebbe anche voler considerare l’istruzione MERGE, che gestisce la sconvolgente caso per voi in un unico blocco SQL.

InformationsquelleAutor Ching | 2012-12-30



5 Replies
  1. 2

    Causa potrebbe essere l’ @nome utente viene utilizzato sia nell’AGGIORNAMENTO e DOVE. In caso di variazioni, il CUI saranno sbagliati e, se non cambia può essere lasciato fuori dalla query.

  2. -1

    sql update

    SqlCommand cmd = new SqlCommand(“update[Testing].[dbo].[studente] set nome= ‘” + tb1.Text + “‘,età='” + tb2.Text + “‘,telefono='” + tb3.Text+ “‘ where id = ‘” + tb4.Text + “‘”, con);

    • Benvenuti a stack overflow 🙂 scrivete a Risposta. È necessario fornire alcune informazioni perché il codice risolve il problema. Solo codice risposte non sono utili per la comunità.
  3. -1
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True");
    
        SqlCommand cmd = new SqlCommand("SELECT * FROM registration WHERE username = " + TextBoxUsername.Text + "UPDATE registration SET username = @username, password = @password, retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno", con);
    
        con.Open();
    
        cmd.Parameters.AddWithValue("@username", TextBoxUsername.Text);
        cmd.Parameters.AddWithValue("@password", TextBoxPassword.Text);
        cmd.Parameters.AddWithValue("@retypepassword", TextBoxRPassword.Text);
        cmd.Parameters.AddWithValue("@gender", DropDownListGender.Text);
        cmd.Parameters.AddWithValue("@birth", DropDownListDay.Text);
        cmd.Parameters.AddWithValue("@address", TextBoxAddress.Text);
        cmd.Parameters.AddWithValue("@city", TextBoxCity.Text);
        cmd.Parameters.AddWithValue("@country", DropDownListCountry.Text);
        cmd.Parameters.AddWithValue("@postcode", TextBoxPostcode.Text);
        cmd.Parameters.AddWithValue("@email", TextBoxEmail.Text);
        cmd.Parameters.AddWithValue("@carno", TextBoxCarno.Text);
    
        cmd.ExecuteNonQuery();
    
        con.Close();
    
        if (IsPostBack)
        {
            Response.Redirect("UpdateSuccess.aspx");
        }
    • Appena invio il codice di lavoro non è una buona risposta, tenta di spiegare dove l’errore è stato
  4. -3

    Penso che nel caricamento della pagina si carica di nuovo tutti i dati e Button1_Click eseguire dopo il caricamento della pagina e avete perso sono tutti i dati
    si può provare il tuo codice nel metodo page_load

    private void Page_Load()
    {
        if (IsPostBack)
        {
            SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True");
    
        SqlCommand cmd = new SqlCommand("UPDATE registration SET username = @username, password = @password, retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno " + "WHERE username = @username", con);
    
        con.Open();
    .
    .
    .
    
        }
    }
    • -1. Meno di pensare, più risposte corrette? L’SQL è borked per iniziare con.
  5. -4

    Non ho mai visto quel tipo di sintassi. Di solito se uno è per l’utilizzo dei parametri, è quello di utilizzare un stored proc (best practice). Se si sta usando inline SQL, si costruisce la SQL istruzione come una singola riga di testo e lo esegue. Vorrei raccomandare la ricodifica per uno di quelli.

    Se volete provare ciò che hai iniziato, nel SQL, probabilmente è necessario dichiarare tutte le variabili prima. Per esempio

    SqlCommand cmd = new SqlCommand("declare @username varchar(100), @password varchar(100), 
    @retypepassword varchar(100) @gender varchar(10), @birth date, @address varchar(100), 
    @city varchar(100) @country varchar(100), @postcode varchar(10), @email varchar(100), 
    @carno varchar(100) UPDATE registration SET username = @username, password = @password, 
    retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, 
    city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno", 
    con);
    • Non c’è alcun obbligo per i giorni non è possibile utilizzare i parametri in linea di SQL testo, e sicuramente non si vuole dichiarare le variabili come avete fatto in precedenza quando si lavora in linea.
    • Chi, che è il più gonfio modo che io abbia mai visto per l’emissione di un’istruzione update.

Lascia un commento