2013-06-02 153 views
-1

我正在製作一個具有用戶數據庫的應用程序,我想知道在填寫和註冊表單時數據庫中是否存在用戶的最佳方法是什麼。 我有一個數據庫叫用戶。它由3列組成:id,userName和Password。檢查數據庫中是否存在數據

這裏是我的代碼插入到數據庫:

SqlConnection con = new SqlConnection("Data Source=HRC0;Initial Catalog=users;Integrated Security=True"); 
con.Open(); 
SqlCommand sc = new SqlCommand("insert into users (userName, password) values('" + korisnik.Text + "','" + pass.Text + "');", con); 
int o = sc.ExecuteNonQuery(); 
MessageBox.Show(o + " Ubačeni ste u bazu korisnika!"); 
con.Close(); 
this.Hide(); 
new Form1().Show(); 

Korisnik是在你寫你的用戶名和傳球是你寫你的密碼框中的文本框的名稱。 而消息框則表示您已添加到用戶庫。如果用戶存在,如果不存在虛假

+0

哪個RDBMS? Sql Server? –

+0

我正在使用Microsoft SQL Server 2008 R2,並在他的管理工作室中創建了數據庫。 – user2445530

回答

0

該查詢返回true(假設用戶名是唯一的)

select 
    cast ((case 
      when exists (select null from Users where UserName = @username) 
      then 1 else 0 end) as bit) 

要調用它使用此代碼

cmd.Text = "..text above.." 
cmd.Parameters.Add("@username", SqlDbType.nvarchar).Value = korisnik.Text; 
var result = (bool)cmd.ExecuteNonQuery(); 

從不將查詢您的顯示方式問題,它導致sql注入。

1
using(var con = new SqlConnection(ConnectionString)) 
using(var sc = new SqlCommand("if NOT exists (select * from users where UserName = @username) insert into users (userName, password) values(@userName, @password)",con)) 
{ 
    sc.Parameters.AddWithValue("@username", korisnik.Text); 
    sc.Parameters.AddWithValue("@password", pass.Text); 
    con.Open(); 
    int o = sc.ExecuteNonQuery(); 
}