检查数据库中是否存在数据

时间:2013-06-02 17:19:30

标签: c# database sql-server-2008-r2

我正在创建一个具有用户数据库的应用程序,我想知道在填写和注册表单时检查用户是否存在于数据库中的最佳方法是什么。 我有一个名为users的数据库。它由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是您在其中编写用户名的文本框的名称,pass是您编写密码的文本框。 并且消息框表示您已添加到用户库。

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

如果用户存在,则此查询返回true,否则返回false(假设用户名是唯一的)

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注入。