2016-03-22 6 views
0

私は現在、自分のウェブサイトで新しいユーザを作成するときに、データベーステーブルbrugereがすでに存在するかどうかチェックし、新しいユーザーを作成すべきではありません。ユーザ名が既にデータベースに存在するかどうかをチェックするc#

しかし、私はそれを動作させることはできません....

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

のようになります考慮するとして、あなたはあなたの 'bruger_navn'パラメータの前に' @ '逃し、括弧や変数の名前でいくつかの混乱を持っています。 'cmd.Parameters.AddWithValue(" @ bruger_navn "、txtUsername.Text); ' –

答えて

5

まず、あなたはのparamの名前も

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

@が欠落している、あなたがのためにConnectionプロパティを指定する必要がありますSqlCommand

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

または

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

はまた、私はコードが

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

ああ、ありがとう:Dありがとう。しかし、@をparamの名前に追加しましたが、存在しない新しいユーザーを作成しようとすると、ユーザー名は既に取得されているというエラーmsgが表示されます。いいえhabla SQLシニア:O – Nicolaj

+0

@ニコラージ私は答えを更新した、また、完全なコードを追加してみてください。 – Valentin

+0

テーブルのスキーマはどのように見えますか?ユーザ名はキーフィールド 'cmd.ExecuteNonQuery();' try {} catch(SqlDbException sqlDbEx){} 'を囲んで適切な例外をトラップできるようにします – MethodMan

関連する問題