2017-01-26 6 views
-5

Kann mir jemand helfen? Ich bekomme nur als Ergebnis tb_localidade: System.Data.SqlClient.SqlDataReaderJut bekommen als Ergebnis: System.Data.SqlClient.SqlDataReader

Warum? Hier ist der Code:

private void btn_normalizar_Click(object sender, EventArgs e) 
{ 
    //connection string - one or other doenst work 
    //SqlConnection conn = new SqlConnection("DataSource=FRANCISCO_GP;Initial Catalog=Normalizacao;Integrated Security=True;"); 

    SqlConnection conn = new SqlConnection(Properties.Settings.Default.connString); 

    string sql = "SELECT ART_DESIG from Arterias where ART_COD = '10110'"; 

    SqlCommand cmd = new SqlCommand(sql, conn); 

    conn.Open(); 

    SqlDataReader leitor = cmd.ExecuteReader(); 

    tb_localidade.Text = leitor.ToString(); 

    conn.Close(); 

}

+0

Haben Sie für jedes Beispiel suchen, wie man Verwenden Sie einen DataReader? Es gibt eine Menge herum und keiner verwendet ToString, um den Inhalt eines Datensatzes – Steve

+0

zu erhalten Bitte lesen Sie [fragen] und bearbeiten Sie Ihren Titel und Körper –

+0

Was Sie wirklich wollen, ist ExecuteScalar. – LarsTech

Antwort

0

Sie dies telefonisch Read() auf Ihrem Datenleser tun können, und die Zuordnung der Ergebnisse:

private void btn_normalizar_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.connString)) 
    { 
     conn.Open(); 

     string sql = "SELECT ART_DESIG from Arterias where ART_COD = '10110'"; 

     using (SqlCommand cmd = new SqlCommand(sql, conn)) 
     { 
      SqlDataReader leitor = cmd.ExecuteReader(); 

      while (leitor.Read()) 
      { 
       tb_localidade.Text = leitor["ART_DESIG"].ToString(); 
      } 
     } 
    } 
} 

Ein weiterer Hinweis ist, dass mit einem using Block für Ihre SqlConnection und SqlCommand Objekte ist eine gute Angewohnheit.

Hinweis: Dies weist das Ergebnis tb_localidade.Text für für jede Zeile in der Ergebnismenge zu. Wenn Sie nur beabsichtigen, dass dies ein Datensatz ist, sollten Sie stattdessen in .ExecuteScalar() suchen (siehe unten).

private void btn_normalizar_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.connString)) 
    { 
     conn.Open(); 

     string sql = "SELECT ART_DESIG from Arterias where ART_COD = '10110'"; 

     using (SqlCommand cmd = new SqlCommand(sql, conn)) 
     { 
      tb_localidade.Text = cmd.ExecuteScalar().ToString(); 
     } 
    } 
} 
0

vor execute "ExecuteReader()", dann müssen Sie lesen Ergebnisse zu erhalten.

0

Verbesserung der Siyual-Antwort. Sie suchen nur nach einem einzelnen Ergebnis, und dies stellt sowohl die Verbindung als auch den Datenreader explizit zur Verfügung.

private void btn_normalizar_Click(object sender, EventArgs e) 
{ 
    using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.connString)) 
    { 
     conn.Open(); 

     string sql = "SELECT ART_DESIG from Arterias where ART_COD = '10110'"; 

     using(SqlCommand cmd = new SqlCommand(sql, conn)) { 

      using(SqlDataReader leitor = cmd.ExecuteReader()) 
      { 
       if (leitor.Read()) 
       { 
        tb_localidade.Text = leitor["ART_DESIG"].ToString(); 
       } 
      } 
     } 
    } 
} 
0

Sie sollten nur diese

SqlDataReader leitor = cmd.ExecuteReader(); 
string res=""; 
while(leitor.Read()) 
{ 
    res=leitor.GetValue(0).ToString()///////if in sql it is varchar or nvarshar 
} 

tb_localidade.Text = res; 

actully Datareader ist ein 1d Tisch und wir können mit GetValue oder GetInt32 auf diese zugreifen oder ...

Verwandte Themen