【问题标题】:How to integrate SQL with Windows forms?如何将 SQL 与 Windows 窗体集成?
【发布时间】:2011-11-04 05:57:08
【问题描述】:

我的小项目有一些问题。

我必须检查TextBox 文本字段中的名称和密码是否与SQL 数据库匹配。如果密码和名称与数据库匹配,则用户将被转移到另一个表单。否则会显示错误信息。

现在。我无法确定TextBox 文本中输入的名称和密码是否与 SQL 数据库匹配。

我没有在这个项目中使用数据绑定;这只是一个普通的数据库应用程序。

private void button2_Click(object sender, EventArgs e)
{
    if (PasswordtextBox1.Text == "")
    {
        MessageBox.Show("Error! Enter password !", "Warning");
    }
    else
    { 
        if (StaffUserIDcomboBox1.Text == "")
        {
            MessageBox.Show("Warning!");
        }

        string strSql = "Select UserLogin From UserLogin Where UserLoginID=" + int.Parse(StaffUserIDcomboBox1.Text);
        UserClass1 userClass = new UserClass1();
        SqlDataReader UserLogin_ID = userClass.GetUserID();

        userClass.executeDataCommand(strSql);

        int rowCount = 0;
        if (UserLogin_ID.HasRows)
        {
            while (UserLogin_ID.Read()) 
            {
                rowCount++;
            }

            DisplayLabel.Text = rowCount.ToString();
            UserLogin_ID.Close();

            //pass value to form2 if valid
            string userid = StaffUserIDcomboBox1.Text;
            parent.setCurentUser(userid);
        }
        else
        {
            MessageBox.Show("No Results Found! Please Try again!");
        }
    }  
}                

【问题讨论】:

  • 您现在遇到的错误是什么?
  • 拿一本初学者编程书。阅读它,学习编程。当您意识到“我遇到了错误”是一个糟糕的陈述并且我们希望您至少在您的问题上花费大量脑力来告诉我们您遇到了什么错误时,请回来。 “它不起作用”并不完全有帮助。 Stackoverflow 不是编程课程的替代品。正常项目使用数据绑定。还有 MVC(模型视图控制器)。
  • @Kangkan 好吧,没有任何错误。它只是按正常方式调试,但它确实检查了密码是否与数据库匹配。只需跳过并继续其他表格。
  • @TomTom 抱歉我措辞不佳。问题是没有错误说明,即使密码与数据库不匹配,它仍然会继续下一个表单。我使用的是 TDBMS(关系数据库管理系统)

标签: c# sql visual-studio-2008 sql-server-2005


【解决方案1】:

我在数据库中找不到任何检查密码匹配的代码。一般来说,你应该有一个方法来验证用户和密码,比如

private bool ValidateUser(String UserName, string HashedPassword)
{
    //Use datareader etc to query
    // SQL Query
    string strSql = "Select UserLogin From UserLogin Where UserLoginID=" + UserName + " UserPassword = " + HashedPassword;
    //check for returned rows count
    //return true if found                
}

【讨论】:

  • 当你这样做时,无论如何避免像这样将你的 SQL 语句连接在一起!这是对 SQL 注入攻击的公开邀请 - 使用 参数化查询!总是 - 没有例外
【解决方案2】:

在messagebox.show 代码之后放置一个BREAK;

【讨论】:

    猜你喜欢
    • 2012-05-23
    • 2012-10-30
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多