检查用户名是不是存在于数据库中

Posted

技术标签:

【中文标题】检查用户名是不是存在于数据库中【英文标题】:Check if username exists in database or not检查用户名是否存在于数据库中 【发布时间】:2021-12-15 22:28:00 【问题描述】:

如何检查给定的用户名是否存在于数据库中?

我需要程序在用户按下注册按钮时显示用户名是否存在,因为目前如果我输入一个现有的用户名,我的程序会出错并崩溃。

我的表名为Login,插入表有UsernamePassword

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;

namespace Proton_System

    public partial class Register : Form
    
        public Register()
        
            InitializeComponent();
        

        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\baich\Documents\Data.mdf;Integrated Security=True;Connect Timeout=30");
        SqlCommand cmd;

        private void buttonRegister_Click(object sender, EventArgs e)
        
            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
            
                MessageBox.Show("Username or Password fields are empty", "Register Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
            else if (textBox2.Text == textBox3.Text)
            
                con.Open();

                cmd = new SqlCommand ("INSERT INTO Login VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "')", con);
                cmd.ExecuteNonQuery();

                MessageBox.Show("Your account has been successfully created", "Register Successful", MessageBoxButtons.OK, MessageBoxIcon.Information);
            
            else
            
                MessageBox.Show("Password does not match", "Register Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
        

        private void button1_Click(object sender, EventArgs e)
        
            Login Form1 = new Login();
            Form1.Show();
            this.Hide();
        
    

【问题讨论】:

使用参数化查询或将数据库暴露给 SQL 注入攻击。 我建议您使用好的身份验证库,而不是将密码存储在数据库中并以纯文本形式存储。至少对密码进行哈希处理。 select count(yourusernamefield) from login where yourusernamefield = .. 至于你的问题:select * from [login] where id = ? 我是否将其添加到另一个 else if 语句中?如果是这样,我需要在 else if ( ?? ) 中添加什么 【参考方案1】:

假设 textBox1 是您可以使用类似这样的用户名。

cmd = new SqlCommand ("select top 1 * from Login where Username = @username", con);
cmd.Parameters.AddWithValue("@username", textBox1.Text);
bool userExists = cmd.ExecuteScalar() != null;

我强烈建议您花一些时间阅读有关参数化 SQL 查询的信息。 这是一个帮助您入门的链接https://visualstudiomagazine.com/articles/2017/07/01/parameterized-queries.aspx

【讨论】:

以上是关于检查用户名是不是存在于数据库中的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是不是存在于数据库php中

Core Data - 如何检查用户是不是存在于数据库中?

如何检查用户是不是存在于数据库表中?

Django:检查实例是不是存在于用户数据库中并保存到应用模型数据库

如何检查用户是不是存在于 Firebase 中?

Codeigniter-检查用户是不是存在于月份