-1

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

4

2 回答 2

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();
}
于 2013-06-02T17:44:02.890 回答
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 注入。

于 2013-06-02T17:35:39.913 回答