none
Quando usar DataSet, DataTable, DataReader???

    Pergunta

  • Minha dúvida é a seguinte:

     

    quando utilizar DataSet, DataSet Tipado, DataTable e DataReader??

     

    Para eu preencher uma gridview, posso utilizar o DataReader ou é melhor utilizar outras classes?

     

     

    Obrigado
    segunda-feira, 7 de maio de 2007 16:58

Todas as Respostas

  • Fernando,

    estou enviando esse link de um artigo que tira algumas dúvidas suas.

    http://www.microsoft.com/brasil/msdn/tecnologias/MSDNMagazine/MSAccesscomADONET.mspx

     

    Espero te-lo ajudado.

     

     

    Abraço

    terça-feira, 8 de maio de 2007 14:57
  • Se sua dúvida é entre DataSet e DataSet tipado, eu te diria que 99,999999% das vezes é o tipado.

     

    Se for entre DataSet e DataTable, são sempre os dois, não tem jeito.

     

    Se for entre DataSet e DataReader, DataReader é somente leitura e conectado. DataSet le, escreve, pesquisa, altera esquema, serializa, deserializa e opera desconectado. Obviamente, é mais pesado que DataReader.

    quinta-feira, 10 de maio de 2007 04:59
  • Caro Fernando,

     

    Se você procura apenas fornecer informações para exibição neste GridView eu aconselho a utilização do DataReader por questões performáticas, o DataReader é mais "leve" que os outros citadados por você isto faz com que o DataReader seja mais rápido, porém ele somente permite a leitura adiante (leitura para frente), mas se realmente seu objetivo é apenas exibição isto não causa nenhum inconveniente.

     

     

    Abraços,

    M. Sc. Márcio Luiz Rossato Gomes

    Microsoft Innovation Center Curitiba

    quarta-feira, 5 de setembro de 2007 17:53
  •  

    Utilizar DataReader pode te ocasionar algum problema caso você tenha paginação na sua listagem, isso ocorre pelo fato do DataReader ser Only-Forward.

     

    Em muitos casos ele resolve e é mais otimizado,  mas em paginação realmente não funciona.

     

    Já um DataSet contém diversas DataTables, você pode trabalhar com um Banco de Dados Inteiros dentro de um DataSet, com relacionamentos Views (DataViews) e etc.

     

    E a DataTable equivale a uma tabela somente, ela pssui as linhas (rows) e colunas.

     

    Espero ter contribuido.

    sábado, 29 de setembro de 2007 00:00
  • Ola Fernando,

    Eis aqui um post que poderá ajudá-lo: http://weblogs.pontonetpt.com/israelaece/posts/3325.aspx

     

    segunda-feira, 1 de outubro de 2007 10:04
  • Eu uso as seguintes regras:

    -Para cadastros e páginas que não são acessadas frequentemente, uso DataSets tipados.

    -Para páginas que são muito acessadas uso DataReader

     

    Para performance, o DataReader é incomparável, é muito mais rápido.

     

    Quanto a paginação, achei uma solução interessante.

    Para uma pagina de listagem que existe no sistema, uso a procedure abaixo (minimizada, pois ela é bem grande):

     

    create procedure [spr_ExemploPaginacao

    (

    @Pagina int,

    @NumRegistros int,

    @fila_id int,

    @order varchar(4000)

    )

    AS begin

    DECLARE @sql varchar(4000)

    DECLARE @TempItems TABLE

    (

    ID int IDENTITY,

    PEDIDO_ID int

    )

    INSERT INTO @TempItems (PEDIDO_ID)

    SELECT

    P.PEDIDO_ID

    FROM

    dbo.PEDIDOS

    WHERE

    fila_id = @fila_id

    ORDER BY

    CASE WHEN @ORDER = 'PEDIDO_ID' THEN P.PEDIDO_ID END ,

    CASE WHEN @ORDER = 'PEDIDO_ID DESC' THEN P.PEDIDO_ID END DESC ,

    CASE WHEN @ORDER = 'PEDIDO_DATA' THEN P.PEDIDO_DATA END ,

    CASE WHEN @ORDER = 'PEDIDO_DATA DESC' THEN P.PEDIDO_DATA END

    SELECT

    p.PEDIDO_ID, p.campoB AS campoB, p.campoC AS campoC

    FROM

    @TempItems AS t

    INNER JOIN [PEDIDOS] AS P ON p.PEDIDO_ID = t.PEDIDO_ID

    AND T.ID BETWEEN (@Pagina - 1) * @NumRegistros + 1 AND @Pagina * @NumRegistros

    ORDER BY

    CASE WHEN @ORDER = 'PEDIDO_ID' THEN P.PEDIDO_ID END ,

    CASE WHEN @ORDER = 'PEDIDO_ID DESC' THEN P.PEDIDO_ID END DESC ,

    CASE WHEN @ORDER = 'PEDIDO_DATA' THEN P.PEDIDO_DATA END ,

    CASE WHEN @ORDER = 'PEDIDO_DATA DESC' THEN P.PEDIDO_DATA END

    end

     

    Ela cria uma tabela temporária, isso pode consumir um pouco de memória no servidor, porém nunca tive problemas com isso. Ela tem a vantagem de só retornar os pedidos que eu preciso. Por exemplo, se eu não usasse isso e tivesse 4000 registros, caso eu só quisesse os 10 últimos, eu teria que receber os 4000 e só exibir os últimos 50.

     

    Bom, espero ter ajudado.

     

    Um abraço,

    Danilo Feltrini

    sexta-feira, 2 de novembro de 2007 14:43