【问题标题】:Check if user exists in table through SQL通过SQL检查用户是否存在于表中
【发布时间】:2017-01-10 20:08:49
【问题描述】:

我正在尝试在 ASP.NET 中的“创建用户”表单上创建一个函数。

我试图弄清楚如何从我的类文件中获取关于 SQL 验证函数的 if 语句,以查看用户名和电子邮件是否已被使用。

这就是我试图做的。


类文件:

public DataTable ValidateUSER(string Username)
{
    string SQL = "SELECT fldUsername FROM tblBruger WHERE fldUsername LIKE 
    @username";

    SqlCommand CMD = new SqlCommand(SQL);

    CMD.Parameters.AddWithValue("@username", Username);

    return DA.GetData(CMD);
}

我的代码隐藏:

LoginClass objLogin = new LoginClass();

 protected void ButtonCheck_Click(object sender, EventArgs e)
{
    string txtUser = txtUsername.Text;


    if (obj.ValidateUSER(txtUser) == txtUser)
    {
        litResult.Text = "Username already taken";
    }

【问题讨论】:

  • 您永远不会执行 SQL 命令,请参阅此文档页面:msdn.microsoft.com/en-us/library/fksx3b4f.aspx
  • 您有没有想过在创建新应用程序时使用 Asp.NET 创建的默认样板?只需使用个人用户帐户创建一个新应用程序,所有这些都为您完成,无需重新发明轮子
  • 从未听说过 og 样板文件?这是一项学校作业,所以我们必须按照他们教给我们的内容来工作。

标签: sql asp.net .net validation


【解决方案1】:

你需要使用SqlDataReader

string SQL = "SELECT fldUsername FROM tblBruger WHERE fldUsername LIKE 
    @username";

SqlCommand CMD = new SqlCommand(SQL); 

SqlDataReader rdr = CMD.ExecuteReader();

while (rdr.Read())
{
//do something with result set
}

【讨论】:

    【解决方案2】:

    我不确定DA 是什么,但我猜它是某种数据访问框架,它将执行提供的命令并返回一个数据表。如果是这种情况,您只需稍作修改即可。

    public string ValidateUser(string userName)
    {
        string sql = "SELECT fldUsername FROM tblBruger WHERE fldUsername LIKE @username";
        SqlCommand cmd= new SqlCommand(sql);
        cmd.Parameters.AddWithValue("@username", userName);
        DataTable table = DA.GetData(cmd);
        if (table.Rows.Count != 0) 
        {
            return table.Rows[0].Item[0] as string;
        }
        return null;
    }
    

    这里也是一个调整。请注意,我使检查不区分大小写,这对于用户名来说似乎是明智的:

    var s = obj.ValidateUser(txtUserName.Text);
    if (s != null && s.ToLower() == txtUserName.Text.ToLower())
    {
        litResult.Text = "Username already taken";
    }
    

    另请注意,我更改了一些标识符的大小写,以便它们与 Microsoft 发布的 C# coding conventions 一致。

    【讨论】:

    • 我修好了,谢谢!你的代码不起作用。如果 (s != null) { litResult.Text = "用户名已被占用"; 我保持 SQL 不变。 }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多