【问题标题】:Trying to check if user exists in my database试图检查用户是否存在于我的数据库中
【发布时间】:2021-01-11 10:54:15
【问题描述】:

我正在尝试检查用户是否存在于我的 SQL Server 数据库中,但如果用户存在或不存在,我总是得到相同的响应(重定向 到~/korisnik/Korisnikkp。有人能帮我吗? P问题是编译器没有使用这个@0 获取用户名值。你知道怎么解决吗?如果我使用示例“nicolas55”对用户进行硬编码,它可以工作。 谢谢

    if (IsPost)
{
    var Username = "";
    var Password = "";
    Username = Request.Form["Username"];
    Password = Request.Form["Password"];
    if (Username != "" && Password != "")
    {
        var db = Database.Open("Useri");
        var command = @"SELECT username FROM Users WHERE username = @Username"; //when I put here 'nikola55' it works
        var result = db.QueryValue(command, Username);


        if (result != null)
        {
            Response.Redirect("~/korisnik/Korisnikkp");
        }
        else
        {
            <script type="text/javascript">
                alert("No user in database");
            </script>
        }

表格代码:

<form method="post">
                        <!-- to error: add class "has-danger" -->

                        <label for="exampleInputEmail1">username</label>
                        <input type="text" value="@Username">
                        <label for="exampleInputPassword1">Password</label>
                        <a href="#" style="float:right;font-size:12px;">Forgot password?</a>
                        <input type="password" value="@Password">

                        <button type="submit" class="btn btn-primary btn-block">Sign in</button>

                        <div class="sign-up">
                            Don't have an account? <a href="/korisnik">Create One</a>
                        </div>
                    </form>

【问题讨论】:

  • 您是否尝试过调试应用程序并查看“end”变量的内容?
  • 您向我们展示了带有硬编码用户名的代码,正如您所说,它可以正常工作。请显示不适合您的代码,以便我们尝试修复它
  • 一切都好 - 学习是乐趣的一部分。 ;)
  • 有人应该将此问题标记为重复(可能是stackoverflow.com/questions/12543848/…)。

标签: c# sql-server asp.net-mvc


【解决方案1】:

如果您查看文档:https://docs.microsoft.com/en-us/dotnet/api/webmatrix.data.database.queryvalue?view=aspnet-webpages-3.2,您会看到 Database.QueryValue Executes a SQL query that returns a single scalar value as the result.

所以它总是会返回一些对象。它不应该为空。所以你必须检查该对象的值而不是 QueryValue 的返回值

【讨论】:

  • 我想返回我的查询影响了多少行。我使用查询、执行,但总是相同的响应。
  • @NikolaStankovic,Database.QueryValue 将始终返回单个标量值作为结果。如果要找出受影响的行数,则必须使用不同的数据库方法。使用 Database.Execute 或 Database.Query。 Database.Execute 将返回受影响的记录数,Database.Query 将返回您可以计算的行数。
  • 我很快就会在这里编辑我的代码,但我已经使用了它,但仍然无法正常工作。
  • @mjwills 你是对的,但是使用什么而不是选择呢?
  • @mjwills 我会试试的!谢谢
【解决方案2】:

尝试以下操作:

if ((object)end != DBNull.Value)
{
    Response.Redirect("~/korisnik/Korisnikkp");
}
else
{
    <script type="text/javascript">
        alert("No user in database");
    </script>
}

【讨论】:

    猜你喜欢
    • 2013-12-16
    • 2013-08-31
    • 2021-12-15
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2023-03-27
    相关资源
    最近更新 更多