Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe OracleDataAdapter

Representa um conjunto de comandos de dados e uma conexão a um banco de dados que são usados para preencher o DataSet e atualizar o banco de dados. Esta classe não pode ser herdada.

Namespace:  System.Data.OracleClient
Assembly:  System.Data.OracleClient (em System.Data.OracleClient.dll)

public sealed class OracleDataAdapter : DbDataAdapter, 
	IDbDataAdapter, IDataAdapter, ICloneable

The OracleDataAdapter serve sistema autônomo uma ponte entre uma DataSet e banco de dados para recuperar e salvar sistema autônomo dados.The OracleDataAdapter fornece esta ponte usando Fill para carregar dados do banco de dados para o DataSete usando Update para enviar as alterações feitas no DataSet volta para a fonte de dados.

Quando o OracleDataAdapter preenche uma DataSet, cria os necessárias tabelas e colunas para os dados retornados se eles já não existirem. No entanto, informações de chave primária não estão incluídas no esquema implicitamente criado, a menos que o MissingSchemaAction propriedade é conjunto para AddWithKey. Você também pode ter o OracleDataAdapter criar o esquema da DataSet, incluindo informações de chaves primárias, antes de preenchê-lo com dados usando FillSchema. Para obter mais informações, consulte Trabalhar com eventos DataAdapter.

ObservaçãoObservação:

Por padrão, os campos numéricos importados para um DataTable com Fill são mapeados para OracleNumber objetos. É possível estourar o OracleNumbere gerar uma exceção de Oracle, importando um valor numérico não integral que é muito grande ou muito alta precisão para o OracleNumber's limitações de precisão. Consulte a descrição de OracleNumber Para obter mais informações.

The OracleDataAdapter também inclui o SelectCommand, InsertCommand, DeleteCommand, UpdateCommand, e TableMappings propriedades para facilitar o carregamento e a atualização de dados.

O .NET estrutura dados provedor para Oracle não dá suporte a instruções SQL em lote.No entanto, ele permite usar vários REF CURSOR saída de parâmetros para preencher um DataSet, cada um em sua própria DataTable. Você deve definir sistema autônomo parâmetros, marcá-los sistema autônomo parâmetros de saída e indicar que eles são REF CURSOR tipos de dados. Observe que não é possível usar o Update método quando o OracleDataAdapter é preenchido usando REF CURSOR parâmetros retornados por um procedimento armazenado, pois Oracle não fornece as informações necessárias para determinar que o nome da tabela e nomes de coluna são quando o demonstrativo SQL é executado. O exemplo a seguir translation from VPE for Csharp pressupõe que você tenha criado neste procedimento armazenado.

criar seguinte pacote Oracle no servidor Oracle.

CREATE OR REPLACE PACKAGE CURSPKG AS 
   TYPE T_CURSOR IS REF CURSOR; 
   PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, 
      IO_CURSOR OUT T_CURSOR); 
   PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, 
      DEPTCURSOR OUT T_CURSOR);
END CURSPKG;
/

Crie o seguinte corpo de pacote Oracle no servidor Oracle.

CREATE OR REPLACE PACKAGE BODY CURSPKG AS 
    PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, 
                               IO_CURSOR OUT T_CURSOR) 
    IS 
        V_CURSOR T_CURSOR; 
    BEGIN 
        IF N_EMPNO <> 0 THEN 
             OPEN V_CURSOR FOR 
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME 
                  FROM EMP, DEPT 
                  WHERE EMP.DEPTNO = DEPT.DEPTNO 
                        AND EMP.EMPNO = N_EMPNO; 
        ELSE 
             OPEN V_CURSOR FOR 
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME 
                  FROM EMP, DEPT 
                  WHERE EMP.DEPTNO = DEPT.DEPTNO; 
        END IF; 
        IO_CURSOR := V_CURSOR; 
    END OPEN_ONE_CURSOR; 
    PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, 
                                DEPTCURSOR OUT T_CURSOR) 
    IS 
        V_CURSOR1 T_CURSOR; 
        V_CURSOR2 T_CURSOR; 
    BEGIN 
        OPEN V_CURSOR1 FOR SELECT * FROM EMP; 
        OPEN V_CURSOR2 FOR SELECT * FROM DEPT; 
        EMPCURSOR  := V_CURSOR1; 
        DEPTCURSOR := V_CURSOR2; 
    END OPEN_TWO_CURSORS; 
END CURSPKG;
 /

O exemplo a seguir translation from VPE for Csharp demonstra como você pode obter informações de coluna e tabela usando o procedimento armazenado.

// GetConnectionString() returns a connection string for
// the data source.

string connString = GetConnectionString();
DataSet ds = new DataSet();
OracleConnection conn = new OracleConnection(connString);
OracleCommand cmd = conn.CreateCommand();

cmd.CommandText = "CURSPKG.OPEN_TWO_CURSORS";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("EMPCURSOR", OracleType.Cursor).Direction = 
       ParameterDirection.Output;
cmd.Parameters.Add("DEPTCURSOR", OracleType.Cursor).Direction = 
       ParameterDirection.Output;

OracleDataAdapter da = new OracleDataAdapter(cmd);
da.TableMappings.Add("Table", "Emp");
da.TableMappings.Add("Table1", "Dept");
da.Fill(ds);

ds.Relations.Add("EmpDept", ds.Tables["Dept"].Columns["Deptno"], 
      ds.Tables["Emp"].Columns["Deptno"], false);

O exemplo do Visual Basic a seguir demonstra como usar um OracleDataAdapter para preencher um DataSet usando um Oracle REF CURSOR. Esses exemplos usam tabelas que são definidas no esquema Scott Oracle/Tiger e requerem que o seguinte pacote PL/SQL e o corpo de pacote.Você deve criar no seu servidor para usar os exemplos.

criar seguinte pacote Oracle no servidor Oracle.

CREATE OR REPLACE PACKAGE CURSPKG AS 
   TYPE T_CURSOR IS REF CURSOR; 
   PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, 
      IO_CURSOR OUT T_CURSOR); 
   PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, 
      DEPTCURSOR OUT T_CURSOR);
END CURSPKG;
/

Crie o seguinte corpo de pacote Oracle no servidor Oracle.

CREATE OR REPLACE PACKAGE BODY CURSPKG AS 
    PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER, 
                               IO_CURSOR OUT T_CURSOR) 
    IS 
        V_CURSOR T_CURSOR; 
    BEGIN 
        IF N_EMPNO <> 0 THEN 
             OPEN V_CURSOR FOR 
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME 
                  FROM EMP, DEPT 
                  WHERE EMP.DEPTNO = DEPT.DEPTNO 
                        AND EMP.EMPNO = N_EMPNO; 
        ELSE 
             OPEN V_CURSOR FOR 
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME 
                  FROM EMP, DEPT 
                  WHERE EMP.DEPTNO = DEPT.DEPTNO; 
        END IF; 
        IO_CURSOR := V_CURSOR; 
    END OPEN_ONE_CURSOR; 
    PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR, 
                                DEPTCURSOR OUT T_CURSOR) 
    IS 
        V_CURSOR1 T_CURSOR; 
        V_CURSOR2 T_CURSOR; 
    BEGIN 
        OPEN V_CURSOR1 FOR SELECT * FROM EMP; 
        OPEN V_CURSOR2 FOR SELECT * FROM DEPT; 
        EMPCURSOR  := V_CURSOR1; 
        DEPTCURSOR := V_CURSOR2; 
    END OPEN_TWO_CURSORS; 
END CURSPKG;
 /

Este exemplo do Visual Basic executa um procedimento armazenado PL/SQL que retorna dois REF CURSOR parâmetros e preenchimentos uma DataSet com as linhas retornadas.


' GetConnectionString() returns a connection string for
' the data source.

    Dim connString As New String(GetConnectionString())
    Dim ds As New DataSet()
    Dim conn As New OracleConnection(connString)
    Dim cmd As OracleCommand = conn.CreateCommand()

    cmd.CommandText = "CURSPKG.OPEN_TWO_CURSORS"
    cmd.CommandType = CommandType.StoredProcedure
    cmd.Parameters.Add("EMPCURSOR", OracleType.Cursor).Direction = _
       ParameterDirection.Output
    cmd.Parameters.Add("DEPTCURSOR", OracleType.Cursor).Direction = _
       ParameterDirection.Output

    Dim da As New OracleDataAdapter(cmd)
    da.TableMappings.Add("Table", "Emp")
    da.TableMappings.Add("Table1", "Dept")
    da.Fill(ds)

    ds.Relations.Add("EmpDept", ds.Tables("Dept").Columns("Deptno"), _
      ds.Tables("Emp").Columns("Deptno"), False)

Após usar o OracleDataAdapter para executar uma Fill ou FillSchema operação, o DataColumn.ReadOnly propriedade sempre retorna false, independentemente de se uma coluna pode ser atualizada ou não, porque o servidor Oracle não retorna essa informação.

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Data.Common.DataAdapter
        System.Data.Common.DbDataAdapter
          System.Data.OracleClient.OracleDataAdapter

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

o.NET Framework e.NET Compact Framework não oferecem suporte a todas as versões de cada plataforma. Para obter uma lista de versões suportadas, consulte Requisitos de sistema do .NET framework.

.NET Framework

Compatível com: 3.5, 3.0, 2.0, 1.1

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft