Inquiridor
Socorro! Refereciar um SQLDatasource - Acesso à dados

Pergunta
-
Eu peguei um componente SqlDatasource na minha tool box, e fiz o seguinte SELECT como mostra o código aspx abaixo:
<
asp:SqlDataSource ID="dsUserNames" runat="server" ConnectionString="<%$ ConnectionStrings:Cronos_DEV %>" SelectCommand="SELECT Customers.Name, UserNames.UserName FROM UserNames INNER JOIN Customers ON UserNames.CustomerId = Customers.Id WHERE (Customers.Active = 1) AND (UserNames.Password = @Password) AND (UserNames.Id = @UserName)" onselected="dsUserNames_Selected"> <SelectParameters> <asp:ControlParameter ControlID="txtPassword" Name="Password" PropertyName="Text" /> <asp:ControlParameter ControlID="txtUserName" Name="UserName" PropertyName="Text" /> </SelectParameters> </asp:SqlDataSource>Como você deve ter percebido eu estou levando como parâmetro o "Password' e "UserName", o txtPassword e txtUserName são os Textbox que o usuário digitará para ser realizada a consulta..... Gostaria de saber como faço para pegar o retorno da consulta e jogar para uma variável de sessão, tudo isso utilizando o código C#. Eu não ter que criar uma conexão fazer um monte de código se posso referenciar meu SqlDatasource....
Por favor se alguém souber me ajudem!
Todas as Respostas
-
Olá Ricardo ,
Para fazer o que você descreveu uma solução seria criar e configurar um SqlCommand e carregar um DataTable para guarda-lo na sessão , o SqlDataSource funciona melhor quando você quer preenche controles como por exemplo um GridView !
Code Snippetprotected void Button1_Click(object sender, EventArgs e)
{
SqlDataReader reader = null;
SqlCommand command = null;
DataTable table = null;
//Configura command
command = new SqlCommand();
command.CommandText = "SELECT Customers.Name, UserNames.UserName FROM UserNames INNER JOIN Customers ON UserNames.CustomerId = Customers.Id WHERE (Customers.Active = 1) AND (UserNames.Password = @Password) AND (UserNames.Id = @UserName)";
command.Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
command.Connection.Open();
command.CommandType = CommandType.Text;
//Configura os parâmetros
command.Parameters.Add("@Password", SqlDbType.NVarChar, 10, "Password").Value = txtPassword.Text;
command.Parameters.Add("@UserName", SqlDbType.NVarChar, 10, "UserName").Value = txtUserName.Text;
//Executa comando
reader = command.ExecuteReader();
//Se existir linha carrega dataTable e guarda na sessão
if (reader.HasRows)
{
table = new DataTable();
table.Load(reader);
Session["table"] = table;
}
}
Se a resposta for útil por favor não esqueça de marca.
Abraço, -
Olá,
"Primeiramente gostaria de citar que esse tópico estava duplicado no fórum de ASP.NET. Por favor, tome cuidado ao postar, para não haver perguntas duplicadas no fórum."
Então o componente SqlDataSource, foi desenvolvido com o intuito de ser usado como uma fonte de dados e não como um consultor de dados programação. O que você quer fazer com ele não se aplica ao conceito do componente.
Minha sugestão seria você criar a conexão como você já faz rotineiramente ou então evoluir para um Data Access Application Block (DAAB) do Enterprise Library.
Working with DAAB
[]'s
Por favor, se a resposta foi útil, marque a como tal.