2014-11-24 195 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()方法。