【问题标题】:database INNER JOIN数据库内部联接
【发布时间】:2018-08-06 04:32:07
【问题描述】:

这是两个设置表

登录表格

用户名

我想创建一些类似用户在文本框中输入USER_IDUSER_PWD 的内容。如果用户成功登录,它会说“HI + PATNAME”。

到目前为止,我已经创建了这段代码,但它不起作用。

string sqlStr = "Select patpro.'PATNAME' FROM patpro,useform where USER_ID=@name and USER_PWD=@password and useform.'USER_ID' = patpro.'USERID'";
cmd.Parameters.AddWithValue("@name", txtValue.Text);
cmd.Parameters.AddWithValue("@password", txtPassword.Password);
cmd.CommandText = sqlStr;
cmd.Connection = connection;

connection.Open();
MySqlDataReader login = cmd.ExecuteReader();

if (login.HasRows)
{
login.Read();
string name = (login["USER_ID"].ToString());
txtAssignID1.Text = "Login verified. Hi, " + name + "\n";
}

【问题讨论】:

  • 怎么不工作了?尝试从字段名称中删除单引号并使用 while (login.Read()) 块将值分配给文本框(如果两个表具有相同的列 ID,也可以使用 INNER JOINON useform.USER_ID = patpro.USERID)。
  • 什么样的“不工作”?错误、意外行为或什么?你做了什么调试?您是否检查过您的变量值是否符合您的预期?您是否在 Workbench 中运行了示例版本的查询来检查逻辑?这是一个足够简单的查询,但您仍然应该对其进行基本检查。如果你已经完成了所有这些,你应该在问题中提到它,那么我们就知道你在做什么。
  • 它发现了一个错误
  • 什么样的错误/异常?请详细解释错误。我怀疑你在读取结果时执行了错误的 SQL 语句或使用了错误的构造。
  • 我们必须猜测错误吗?给我们一个线索。我们不是读心者。

标签: c# mysql database


【解决方案1】:

据我所知,您正在尝试使用login["USER_ID"].ToString(),其中USER_ID 是当前SELECT 语句中不存在的列定义。因此,您应该添加在SELECT 结果中定义的列名,例如login["PATNAME"],并改用正确的INNER JOIN 语句:

string sqlStr = @"SELECT patpro.PATNAME FROM patpro INNER JOIN useform 
                  ON useform.USER_ID = patpro.USERID 
                  WHERE useform.USER_ID = @name AND useform.USER_PWD = @password";
cmd.Parameters.AddWithValue("@name", txtValue.Text);
cmd.Parameters.AddWithValue("@password", txtPassword.Password);
cmd.CommandText = sqlStr;
cmd.Connection = connection;

connection.Open();
MySqlDataReader login = cmd.ExecuteReader();

if (login.HasRows)
{
    // read value inside the loop, because MySqlDataReader is forward-only
    while (login.Read())
    {
        string name = login["PATNAME"].ToString();
        txtAssignID1.Text = "Login verified. Hi, " + name + "\n";
    }
}

附加说明:最好对MySqlConnectionMySqlCommandMySqlDataReader 使用using 语句,以确保在获取查询结果后立即处理MySQL 连接对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 2012-12-02
    • 2016-06-12
    • 2018-02-14
    • 2012-11-15
    • 2010-10-16
    相关资源
    最近更新 更多