SqlDataSource und Oracle Data Provider kann ich nicht in der Lage sein scheinen, die sqlDataprovider mit odp.net zu verwenden

stimmen
0

Ich möchte in der Lage, meine SqlDataProvider gegen ein Orakel gespeicherte Prozedur auszuführen. Ich kann Microsofts Oracle Provider verwenden, aber das würde mir nicht erlauben, eine gespeicherte Prozedur aufzurufen. hat jemand in der Lage gewesen, diese Arbeit zu bekommen? Ich möchte vor allem der Lage sein, die Bindung deklarative Daten zu verwenden. Ich konnte programmatisch eine Datatable erstellen, aber ich möchte dies in der ASPX deklarativ tun.

Veröffentlicht am 09/12/2008 um 22:02
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
2

SqlDataProvider, SqlConnection und andere Klassen Präfix Sql aus der Namespaces System.Data universell ausgelegt, fast zu spezifischen Implementierungen SQL-Servers beziehen. Es ist jedoch möglich, eine gespeicherte Prozedur mit der System.Data.OracleClient Bibliothek Microsoft freigegeben haben aufzurufen.

Bitte stellen Sie sicher , dass , wenn die OracleCommand Konstruieren Sie in Commandtype sind vorbei. StoredProcedure . Andernfalls wird der Datenbank - Engine 'Tabelle direkten Zugang des Standard, und da es keine Tabelle mit dem Namen Ihrer gespeicherten Prozedur findet, wird es umfallen.

Hier einige Beispiel-Code auf, wie diese hinter den Kulissen arbeiten würde:

using (OracleConnection conn = new OracleConnection("connection string here"))
{
    conn.Open();

    OracleCommand command = conn.CreateCommand();
    command.CommandType = CommandType.StoredProcedure;

    command.CommandText = "DATABASE_NAME_HERE.SPROC_NAME_HERE";
    // Call command.Parameters.Add to add your parameters.

    using (OracleReader reader = command.ExecuteReader())
    {
        while(reader.Read())
        {
            // Process each row
        }
    }

}

Wenn ASP .NET verwenden, können Sie die SqlDataSource verwenden, um den Oracle-Client mit einer Verbindungszeichenfolge wie definiert acces:

<add name="OracleConnectionString"
  connectionString="Data Source=YourServer;Persist 
    Security Info=True;Password="******";User ID=User1"
  providerName="System.Data.OracleClient" />

Beachten Sie, dass wir die OracleClient Bit dort haben. Dann auf dem SqlDataSource stellen Sie die Select Commandtype auf sie StoredProcedure in Ihrer ASPX - Seite, und der Rest ziemlich funktioniert wie SQL Server zu sein (in der Tat, Sie haben tatsächlich dies zu tun , um die SQL Server - Version zu nennen).

Das Ergebnis sieht ein bisschen wie:

  <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:OracleConnectionString %>"
            ProviderName="<%$ ConnectionStrings:OracleConnectionString.ProviderName %>" SelectCommand='TEST_ONE' SelectCommandType="StoredProcedure" ></asp:SqlDataSource>
Beantwortet am 14/12/2008 um 12:40
quelle vom benutzer

stimmen
0

Hier sind die Schritte, um eine tabellenartige select-Anweisung zurückzukehren ::

1) Sie sollten einen Cursor für die Auswahl zurückkehren, dann fügen Sie in den Parametern io_cursor IN OUT CURSOR

2) Wenn Sie Verbrauchen es wieder einen einzigen Parameter hinzufügen

<asp:Parameter Name="io_cursor" Direction="Output" />

3) In Ereignisprozedur für ‚Auswahl‘ Veranstaltung

4) protected void SqlDataSource1_Selecting (object sender, SqlDataSourceSelectingEventArgs e) {((System.Data.OracleClient.OracleParameter) e.Command.Parameters [0]) = OracleType System.Data.OracleClient.OracleType.Cursor. }

Nun wäre es gut funktionieren.

Beantwortet am 08/03/2013 um 19:05
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more