2013-04-23 97 views
0

我刚刚开始学习C#,这是我第一次请求帮助。将sql查询的结果传递给变量

我写了一个登录脚本,其中有通常的“用户名”和“密码”字段以及提交按钮。

该脚本查询MySQL数据表,如果用户名和密码匹配关闭登录窗口并打开详细信息窗口。

我想要做的是使用查询中的两个字段,并将内容传递给详细信息窗口进行显示。这是迄今为止代码:

MySqlCommand SelectCommand = new MySqlCommand(
"SELECT clientID, login, pass, name_f, 
name_l FROM FIDS_members WHERE login = '" + 
this.username_txt.Text + "' AND pass = '" + 
this.pass_txt.Text + "';", myConn); 

      MySqlDataReader myReader; 
      myConn.Open(); 

      myReader = SelectCommand.ExecuteReader(); 

      int count = 0; 


      while (myReader.Read()) 
      { 

       count = count + 1; 
      } 

      if (count == 1) 
      { 

       string name_f = myReader.GetString("name_f").ToString(); 
       name_f_txt = name_f; 

       this.Hide(); 
       Welcome f2 = new Welcome(name_f.Text); 
       f2.ShowDialog(); 
      } 
      else 

       MessageBox.Show("The username or password are incorrect, please try again..."); 


      // Clear login feilds 
      username_txt.Text = String.Empty; 
      pass_txt.Text = String.Empty; 

我得到的错误是:

“字符串不包含定义为‘文本’

我知道,我可能不做这种正确的,但如果有人可以请提供一些指引,将是非常有益的。

+0

你应该proably使用'新的欢迎(name_f)',而不是name_f .Text自name_f是一个字符串而不是TextBox。如果这没有帮助,请提供发生错误的行号。 – DeCaf 2013-04-23 17:21:17

+0

也开始查找'MySqlParameter' http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlparameter.html – banging 2013-04-23 17:28:59

+0

您可能还想重新查看命名约定。 name_f vs name_f_txt vs pass_txt等等。 – aquaraga 2013-04-23 17:29:35

回答

1

的错误,可能是因为此行

Welcome f2 = new Welcome(name_f.Text); 

更改它通过

Welcome f2 = new Welcome(name_f); 

name_f是根据你的代码的字符串,它似乎你使用它作为一个TextBox

+0

嗨,“name_f”没有设置为文本框,我只是希望它保存查询域的结果。如果我进行了更改并删除了“.Text”,我得到以下错误: – DCJones 2013-04-23 17:39:23

+0

名称'name_f_txt'在当前上下文中不存在 – DCJones 2013-04-23 17:39:48

+0

@DCJones:这意味着'name_f_txt'没有被定义,您确定这是名称?如果'name_f_txt'是一个TextBox,你需要做'name_f_txt.Text = name_f;'但是首先你需要解决“未定义”的问题 – 2013-04-23 17:46:37