2016-03-22 26 views
0

Ich versuche gerade, dass, wenn Sie einen neuen Benutzer auf meiner Website erstellen, sollte es in der Datenbanktabelle brugere einchecken, wenn der Name bereits existiert, und wenn ja, Es sollte keinen neuen Benutzer erstellen.Überprüfen, ob ein Benutzername bereits in der Datenbank ist C#

Aber ich kann es nicht bekommen ....

bool exists = false; 

// create a command to check if the username exists 
using (SqlCommand cmd1 = new SqlCommand()) 

cmd.CommandText = "select count(*) from brugere where bruger_navn = @bruger_navn"; 
{ 
    cmd.Parameters.AddWithValue("bruger_navn", txtUsername.Text); 
    exists = (int)cmd.ExecuteScalar() > 0; 
} 

// if exists, show a message error 
if (exists) 
    Label1. Text = "This username has been using by another user."; 
else 
{ 
    // does not exists, so, persist the user 
    using (SqlCommand cmd2 = new SqlCommand()) 
     cmd2.CommandText = @"INSERT INTO brugere (bruger_navn, Bruger_pass) VALUES (@bruger_navn, @bruger_pass)"; 
    { 
     cmd.Parameters.AddWithValue("bruger_navn", txtUsername.Text); 
     cmd.Parameters.AddWithValue("bruger_pass", txtPassword.Text); 

     cmd.ExecuteNonQuery(); 
    } 
} 

conn.Close(); 
+1

Sie verfehlten 'ähnlich sein @' vor Ihrem 'bruger_navn' Parameter. Es sollte 'cmd.Parameters.AddWithValue (" @ brugner_navn ", txtUsername.Text) sein;' –

Antwort

5

Zuerst werden Sie @ vor param Namen

cmd.Parameters.AddWithValue("@bruger_navn", txtUsername.Text); 
.... 
cmd.Parameters.AddWithValue("@bruger_navn", txtUsername.Text); 
cmd.Parameters.AddWithValue("@bruger_pass", txtPassword.Text); 

Auch fehlt, müssen Sie für eine Connection Eigenschaft angeben ein SqlCommand

using (SqlCommand cmd1 = new SqlCommand()) 
{ 
    cmd1.Connection = conn; 

Oder

using (SqlCommand cmd1 = conn.CreateCommand()) 
{ 

Außerdem haben Sie etwas Chaos mit Klammern und Variablen-Namen, wie ich Code in Betracht ziehen sollten, um

bool exists = false; 

// create a command to check if the username exists 
using (SqlCommand cmd1 = conn.CreateCommand()) 
{ 
    cmd1.CommandText = "select count(*) from brugere where bruger_navn = @bruger_navn"; 
    cmd1.Parameters.AddWithValue("bruger_navn", txtUsername.Text); 
    exists = (int)cmd1.ExecuteScalar() > 0; 
} 

// if exists, show a message error 
if (exists) 
    Label1. Text = "This username has been using by another user."; 
else 
{ 
    // does not exists, so, persist the user 
    using (SqlCommand cmd2 = conn.CreateCommand()) 
    { 
     cmd2.CommandText = @"INSERT INTO brugere (bruger_navn, Bruger_pass) VALUES (@bruger_navn, @bruger_pass)"; 
     cmd2.Parameters.AddWithValue("bruger_navn", txtUsername.Text); 
     cmd2.Parameters.AddWithValue("bruger_pass", txtPassword.Text); 

     cmd2.ExecuteNonQuery(); 
    } 
} 

conn.Close(); 
+0

Oh Gott: D Danke. Aber ich habe die @ 's zu den Parameternamen hinzugefügt und es kommt immer noch mit der Fehlermeldung msg, dass der Benutzername bereits vergeben ist, wenn ich versuche, einen neuen Benutzer zu erstellen, der nicht existiert? Nein habla SQL-Senior: O – Nicolaj

+0

@Nicolaj Ich habe die Antwort aktualisiert, fügte auch den vollständigen Code, versuchen Sie es. – Valentin

+0

Wie sieht das Schema der Tabelle aus ?, ist der Benutzername ein Schlüsselfeld auch 'cmd.ExecuteNonQuery();' wickle das um einen 'try {} catch (SqlDbException sqlDbEx) {}', so dass Sie die richtigen Ausnahmen abfangen können – MethodMan

Verwandte Themen