Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343

    verifica username nel database

    salve ragazzi volevo chiedervi come si puo fare in aspnet il controllo e la verifica della username in un form. Il controllo deve essere che la username inserita dal nuovo utente non debba essere già inserita all'interno del database.
    saluti

  2. #2
    Intendi il controllo dello username per un nuovo utente, durante la fase di registrazione?
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    sisi...

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    //faccio la connessione al db
    //eseguo questa query
    string sql = "SELECT * FROM utenti WHERE Username = @Username";
    ...

  5. #5
    E' simile alla query che usi per il login, con la differenza che qui non devi controllare la password... Una query tipo questa:

    codice:
    SELECT * FROM Utenti WHERE Username = @username
    Poi con un cmd.ExecuteDataReader vedi se ti restituisce un record; se il record c'è vuol dire che c'è già un utente con quel nome.
    Chi non cerca trova.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    tipo questa...
    SqlDataReader dr;
    dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    if (TextBox1.Text == dr["username"].ToString())
    Label1.Text = "Username già esistente";
    else
    ; Label1.Text = "Username disponibili si acki";
    ora lo provo...

  7. #7
    Beh, già il fatto che dr.read() restituisca true vuol dire che quel nome è già stato utilizzato, quindi il successivo if del tuo codice non serve. Io scriverei:

    codice:
    SqlDataReader dr;
    dr = cmd.ExecuteReader(); 
    if (dr.Read()) 
    { 
       Label1.Text = "Username già esistente";
    }
    else
    { 
       Label1.Text = "Username disponibili si acki";
    }
    Chi non cerca trova.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    funzione verifica
    protected void verifica(object sender, EventArgs e)
    {
    string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf";
    string sql = "SELECT * FROM utenti WHERE Username = @Username";
    SqlConnection conn = new SqlConnection(source);
    try
    {
    conn.Open();
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = Username.Text;
    SqlDataReader dr;
    dr = cmd.ExecuteReader();
    if (dr.Read())
    {
    Label1.Text = "Username già esistente";
    }
    else
    {
    Label1.Text = "Username disponibile";
    }
    }
    catch (SqlException sqle)
    {
    string c = sqle.Message;
    Response.Write("Errore durante un tentativo di connessione al database");
    Response.End();
    }
    finally
    {
    conn.Close();
    //Response.Redirect("~/Result.aspx");
    }
    }
    ho aggiunto alla textbox di username
    comando di AutoPostBack ="true" OnTextChanged ="verifica"

    tutto bene fin qui...
    la label mi stampa username gia utilizzata, ma se clicco su invio va inserire ugualmente i dati

  9. #9
    Il controllo se il nome è duplicato va fatto anche sul pulsante Invio
    Chi non cerca trova.

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    343
    si ok...come posso inserirla nel codice
    public partial class Register_aspx : System.Web.UI.Page {
    protected void Invia_Click(object sender, EventArgs e)
    {
    string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf";
    string sql = "INSERT INTO Utenti (nome,cognome,Username,Password,email) VALUES (@nome,@cognome,@Username,@Password,@email)";
    SqlConnection conn = new SqlConnection(source);
    try
    {
    conn.Open();
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.Parameters.Add("@nome", SqlDbType.NVarChar, 50).Value = nome.Text;
    cmd.Parameters.Add("@cognome", SqlDbType.NVarChar, 50).Value = cognome.Text;
    cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = Username.Text;
    cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 50).Value = FormsAuthentication.HashPasswordForStoringInConfig File(Password.Text, "SHA1");
    cmd.Parameters.Add("@email", SqlDbType.NVarChar, 50).Value = email.Text;
    cmd.ExecuteNonQuery();
    }
    catch (SqlException sqle)
    {
    string c = sqle.Message;
    Response.Write("Errore durante un tentativo di connessione al database");
    Response.End();
    }
    finally
    {
    conn.Close();
    Session.Add("Username", Username.Text);
    Session.Add("Password", Password.Text);
    }
    }
    protected void verifica(object sender, EventArgs e)
    {
    string source = "Data Source=.\\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf";
    string sql = "SELECT * FROM utenti WHERE Username = @Username";
    SqlConnection conn = new SqlConnection(source);
    try
    {
    conn.Open();
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.Parameters.Add("@Username", SqlDbType.NVarChar, 50).Value = Username.Text;
    SqlDataReader dr;
    dr = cmd.ExecuteReader();
    if (dr.Read())
    {
    Label1.Text = "Username già esistente";
    }
    else
    {
    Label1.Text = "Username disponibile";
    }
    }
    catch (SqlException sqle)
    {
    string c = sqle.Message;
    Response.Write("Errore durante un tentativo di connessione al database");
    Response.End();
    }
    finally
    {
    conn.Close();
    //Response.Redirect("~/Result.aspx");
    }
    }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.