none
Socorro! Refereciar um SQLDatasource - Acesso à dados RRS feed

  • 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!

    quinta-feira, 19 de junho de 2008 15:10

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 Snippet

    protected 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,

    segunda-feira, 23 de junho de 2008 12:15
  • 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.

    quarta-feira, 2 de julho de 2008 14:33
    Moderador