2014-11-24 5 views
0

Я не могу понять, что случилось, я проверил другие вопросы по этому поводу. я получаю следующее сообщение в моем текстовом поле: "mysql.data.mysqlclient.mysqlcommand"C#, MySql Select statement

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() или даже ExecuteScalar() в зависимости от того, что вы хотите – jbutler483

ответ

2

getNome является MySqlCommand, который не отменяет ToString. Поэтому при вызове getNome.ToString вы получаете полное имя. Вы хотите:

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

(предполагая, что email уникален)

+0

Он работает как шарм –

+0

Да, очевидно, вы не можете зарегистрироваться на веб-сайте с тем же письмом более одного раза –

1

попробовать

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

потому, что вы используете метод .ToString() типа MySqlCommand, который в этом случае возвращается имя самого класса (унаследовано от типа objet).

Вместо этого я бы предложил использовать метод ExecuteScalar().