Array
(
)

Recuperar valor de um SqlDataReader

Ramweb
   - 19 fev 2009

Bom dia pessoal,

sou novo nesse fórum e gostaria de contar com a colaboração de vocês. Estou desenvolvendo uma aplicacação web utilizando visual stúdio 2008, c# e banco de dados sqlServer. Preciso fazer o seguinte:

Tenho uma tabela chamada Tema que possui apenas 1 campo (´TemaSelecionado´) e apenas 1 registro (´Azul por exemplo´).
Preciso recuperar esse dado e atribuí-lo a uma variável do tipo string.
Já tentei várias coisas, mas nada rolou.
Posto abaixo o código que criei tentando resolver tal empasse.
Agradeço imensamente quem puder me ajudar.

Segue classe
#Código

.....
using System.Data.SqlClient;

public class Tema
{
String myConnection = ConfigurationManager.ConnectionStrings["csDados"].ConnectionString;

public Tema()
{
//
// TODO: Add constructor logic here
// Construtor em branco
//
}

public string retornaTema()
{
try
{
String temaBD;

String sql = "SELECT * FROM Tema";
SqlConnection conn = new SqlConnection(myConnection);
SqlCommand cmd = new SqlCommand(sql, conn);

//Abre conexão
conn.Open();

//Lê os dados
SqlDataReader reader = cmd.ExecuteReader();

//PEGAR O VALOR DA TABELA QUE POSSUI APENAS 1 DADO (POSIÇÃO [0 , 0])
//E ATRIBUIR ESSE VALOR A STRING
temaBD = reader.

//Fecha o reader
reader.Close();

//Fecha conexão
conn.Close();

//Retorna o nome do tema
return temaBD;
}
catch (Exception ex)
{
return null;
}
}
return temaBD;
}


Agradeço a colaboração de todos e me coloco a disposição em ajudar.
Obrigado.

Rafael Cabral
   - 04 mar 2009

Olá. Tudo bem?

Faltou vc executar o método Read do DataReader.

#Código

//Lê os dados 
SqlDataReader reader = cmd.ExecuteReader(); 

if (reader.Read())
   temaBD = reader["CAMPO"];

reader.Close(); 



Atenciosamente,

Rafael Cabral

Rafael Cabral
   - 04 mar 2009

Outra coisa. Se o resultado de uma consulta tiver apenas um campo com um registro, vc pode utilizar o método ExecuteScalar. Esse método retorna o valor do primeiro registro do primeiro campo da consulta.

#Código

SqlConnection sqlConn = new SqlConnection("STRING_CONEXAO");
SqlCommand sqlCmd = sqlConn.CreateCommand();
sqlCmd.CommandText = "SELECT CAMPO FROM TABELA WHERE ID = 1";

sqlConn.Open();
string campo = (string) sqlCmd.ExecuteScalar();
sqlConn.Close();


Como o ExecuteScalar retorna object, é necessário vc fazer um casting para atribuí-lo a uma variável.

Atenciosamente,

Rafael Cabral