2014-11-24 153 views
0

我弄不清楚有什么问题,我查了一下其他问题。 我在文本框中得到以下信息: “mysql.data.mysqlclient.mysqlcommand”C#,MySql Select语句

if (Session["Login"] != null) 
    {   
     string email = (string)Session["Login"]; 
     MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringloginDb"].ConnectionString); 
     conn.Open(); 

     MySqlCommand getNome = conn.CreateCommand(); 
     getNome.CommandType = CommandType.Text; 
     getNome.CommandText = "SELECT nome_utente FROM utenti WHERE email = @email"; 
     getNome.Parameters.AddWithValue("@email", email); 
     getNome.ExecuteNonQuery(); 

     txtNome.Text = getNome.ToString(); 

     conn.Close(); 

+1

您需要将.SingleOrDefault()添加到getNome.SingleOrDefault()。ToString()或Even ExecuteScalar()的末尾,具体取决于您想要的内容 – jbutler483 2014-11-24 10:03:17

回答

2

getNomeMySqlCommand不覆盖ToString。因此,当您致电getNome.ToString时,您将获得完整名称。你想这样的:

// getNome.ExecuteNonQuery();     <--- not this 
txtNome.Text = (String)getNome.ExecuteScalar(); <--- but this 

(假设email是唯一的)

+0

它的工作原理类似于魅力 – 2014-11-24 10:05:22

+0

是的,很明显,您无法注册在网站上多次使用同一封电子邮件 – 2014-11-24 10:06:58

1

尝试

txtNome.Text = (string)getNome.ExecuteScalar(); 
1

,因为你正在使用的MySqlCommand类型的ToString()方法,在这种情况下返回类本身的名称(从objet类型继承)。

我建议使用ExecuteScalar()方法。