Jut得到结果:System.Data.SqlClient.SqlDataReader

时间:2017-01-26 20:20:36

标签: c# .net sql-server

有人可以帮帮我吗? 我得到的结果是tb_localidade: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();

}

4 个答案:

答案 0 :(得分: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();
            }
        }
    }
}

另一个注意事项是,为usingSqlConnection对象使用SqlCommand块是一个很好的习惯。

注意:这会将结果分配给结果集中每行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();
        }
    }
}

答案 1 :(得分:0)

执行之前" executeReader()"那么你必须阅读以获得结果。

答案 2 :(得分:0)

改善Siyual的回应。您只需要查找单个结果,这会明确地同时处理连接和datareader。

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

答案 3 :(得分: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是一个1d表,我们可以使用GetValue或GetInt32或......来访问它。