1

我正在尝试在我的 asp.net 页面中创建一个简单的登录表单(我有一个 html 页面,现在我正在尝试将其添加到 asp.net)。它应该使用输入的用户名和密码并连接到 mssql 数据库。在那里我将创建一个 SQL Select 语句,它选择用户名和密码,其中用户名等于在文本框中输入的用户名(然后比较输入的密码是否与数据库中的密码相同)。如果用户名和密码没问题,那么它应该打开另一个页面 - main.aspx。我的 index.aspx 看起来像这样:

<form id="loginform" runat="server" method="post" action="/">
<div id="username_box"><p style="padding-top: 10px; margin: 0px">Username:</p></div>
<input type="text" value="" name="usernameTextBox" runat="server" id="username_input" /><br/>
<div id="password_box"><p style="padding-top: 10px; margin: 0px">Password:</p></div>
<input type="password" value="" name="passwordTextBox" runat="server" id="password_input" /><br/>
<a href="facebook.com" style="float: left;padding-left: 13px;padding-top: 8px;">Glemt kodeordet?</a>
<input type="submit" runat="server" id="LoginBtnClick" />
</form>

按下提交按钮后,有我的c#代码:

protected void LoginBtn_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);
    con.Open();
    SqlCommand cmd = new SqlCommand("select user_username, user_password FROM users WHERE user_username =@username and user_password=@password", con);
    cmd.Parameters.AddWithValue("@username", "user");
    cmd.Parameters.AddWithValue("@password", "1234");
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataTable dt = new DataTable();
    da.Fill(dt);
    if (dt.Rows.Count > 0)
    {
        Response.Redirect("main.aspx");
    }else
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Invalid Username and Password')</script>");
    }
} 

现在我没有使用用户在文本框中输入的用户名和密码,而只是一个硬编码的用户名“user”和密码“1234”,我已经插入到我的数据库中。我不知道如何从文本框中获取文本。但即使使用硬编码的用户名和密码,这整件事也不起作用。

现在最后,这就是我在 Web.Config 中添加的用于创建连接字符串的内容:

<connectionStrings>
<add name="myConnectionString" providerName="System.Data.SqlClient"  connectionString="Data Source=hereistheipofmydb;Initial Catalog=mydb;User Id =myadmin;password=mypass;" />

还有一个问题:是否需要将整个项目上传到服务器(与数据库相同)?现在我在主机上有我的数据库,但我通过 Visual Studio 2012 运行的网站。

4

2 回答 2

2

使用访问文本框

cmd.Parameters.AddWithValue("@username", username_input.Text);

如果您无法连接,我建议您安装一些东西来测试连接,例如SQL Server Express 管理工具。如果这不起作用,它可以是您的电脑和 sql 服务器之间的任何东西,而不是您的程序。然后与您的服务器提供商联系以解决此问题,或尝试在端口 1433(标准端口)上打开防火墙到服务器地址。

另外,不,您只需要上传所有 aspx、js、图像和二进制文件(可能更多)。您不必部署的源文件。您可以做的是只需右键单击项目并选择发布,它将帮助您创建项目的部署。

于 2012-11-15T12:13:28.193 回答
2

您正在艰难地使用数据库。您对连接字符串的使用也是内存泄漏的潜在来源。请考虑使用 LINQ-to-SQL 或实体框架。它们将使您的生活变得更加轻松。调查事件的正确使用对你也很有帮助。请查看这些参考资料:

  1. 发布/订阅事件模式
  2. 在 C# 中开始使用 LINQ
  3. LINQ To SQL 初学者教程
  4. 使用 MVC4 和实体框架向 ASP.NET 添加模型
于 2013-12-15T02:12:29.567 回答