2017-01-26 79 views
-5

有人可以帮我吗? 我只是得到结果tb_localidade:System.Data.SqlClient.SqlDataReader得到结果:System.Data.SqlClient.SqlDataReader

为什么?下面是代码:

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

你搜索任何例如如何使用DataReader?周围有很多人,没有人使用ToString来检索记录的内容 – Steve

+0

请阅读[问]并编辑你的标题和正文 –

+0

你真正想要的是ExecuteScalar。 – LarsTech

回答

0

您可以通过调用您的数据读取器Read()和分配结果做到这一点:

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(); 
      } 
     } 
    } 
} 

另外一个需要注意的是,使用一个using块你SqlConnectionSqlCommand对象是一个很好的习惯。

注意:这是将结果分配给tb_localidade.Text对于结果集中的每行。如果您只是想将其作为一条记录,您可能需要考虑.ExecuteScalar()(请参见下文)。

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

前执行 “的ExecuteReader()”,那么你必须阅读才能得到结果。

0

Siyual回应的改进。你只是在寻找一个单一的结果,并且这明确地处理了连接和数据记录器。

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

你应该只是这个

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的是一维表,我们可以访问到这个用的GetValue或GetInt32等或...