2013-06-02 68 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(); 
}