2

I can't extract the values through a query and insert them into textboxes

Where am I going wrong?

 Request.QueryString.Get("ID_Persona");

 string query = "SELECT ID,Nome,Cognome,Email,CodiceFiscale FROM Persona WHERE ID = @id";

 using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString))
       {         
           SqlCommand cmd = new SqlCommand(query, con);

           cmd.Parameters.AddWithValue("@ID","");
           cmd.Parameters.AddWithValue("@Nome", TextBox1.Text);
           cmd.Parameters.AddWithValue("@Cognome", TextBox15.Text);
           cmd.Parameters.AddWithValue("@Email", TextBox20.Text);
           cmd.Parameters.AddWithValue("@CodiceFiscale", TextBox22.Text);

           con.Open();

           cmd.ExecuteNonQuery();
       }
Dmitry Bychenko
  • 180,369
  • 20
  • 160
  • 215
Elmachico
  • 128
  • 13

3 Answers3

3

You need to use ExecuteReader to read values, something like this:

var connectionString = ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString;
string query = "SELECT ID,Nome,Cognome,Email,CodiceFiscale FROM Persona WHERE ID = @id";
using (SqlConnection con = new SqlConnection(connectionString))
{
    using (var cmd = new SqlCommand(query, con))
    {
      cmd.Parameters.AddWithValue("@ID", Request.QueryString.Get("ID_Persona"));
      con.Open();
      using (var rdr = cmd.ExecuteReader())
      {
          if (rdr.Read())
          {
              //IDTextBox? = rdr["Id"].ToString(),
              TextBox1.Text = rdr["Nome"].ToString(),
              TextBox15.Text = rdr["Cognome"].ToString(),
              TextBox20.Text= rdr["Email"].ToString(),
              TextBox22.Text= rdr["CodiceFiscale"].ToString(),    
          }
      }
   }
}
JohnChris
  • 1,360
  • 15
  • 29
2

You should use a ExecuteReader() instead of ExecuteNonQuery() since ExecuteNonQuery is meant for DML operations. Again, you need only the ID value to be passed then why you are passing unnecessary parameters to your query. Remove them all. An example below

    SqlDataReader reader = cmd.ExecuteReader();
    while (reader.Read())
    {
        Console.WriteLine(String.Format("{0}", reader["Email"]));
    }
Rahul
  • 76,197
  • 13
  • 71
  • 125
2

I can see several issues:

  1. You should use ExecuteReader() instead of ExecuteNonQuery()
  2. You should provide just 1 parameter - @ID; I doubt if it should have an empty value.
  3. You should wrap IDisposable into using

Code:

   string query = 
     @"SELECT ID,
              Nome,
              Cognome,
              Email,
              CodiceFiscale 
         FROM Persona 
        WHERE ID = @id";

   using (SqlConnection con = new SqlConnection(...))
   {         
       con.Open();

       using SqlCommand cmd = new SqlCommand(query, con) 
       {
           // I doubt if you want empty Id here. 
           // I've assumed you want to pass ID_Persona
           cmd.Parameters.AddWithValue("@ID", Request.QueryString.Get("ID_Persona")); 

           using (var reader = cmd.ExecuteReader())
           {
               if (reader.Read()) 
               {
                   TextBox1.Text  = Convert.ToString(reader["Nome"]); 
                   TextBox15.Text = Convert.ToString(reader["Cognome"]); 
                   TextBox20.Text = Convert.ToString(reader["Email"]); 
                   TextBox22.Text = Convert.ToString(reader["CodiceFiscale"]);   
               }
           }
       }
  }
Dmitry Bychenko
  • 180,369
  • 20
  • 160
  • 215