2012-04-03 2 views
1

Grüße,wie system.data.dataset aus oracle.dataaccess.client.oracledataadapter zu füllen?

I Oracle 10g Express Edition-Datenbank auf einem Server installiert haben und den Client auf meinem PC installieren.

Jetzt entwickle ich eine vb.net Anwendung mit Visual Studio 2005 und ich brauche die Orakel 10g Express Edition Datenbank. SO initialisieren ich die Verbindung die folgende Verbindungszeichenfolge:

_connectionString = "User Id=Graphya;Password=Graphya;Data Source=gis64:1522/XE;" 

Dann definiere ich neue OracleDataAdapter, und ich verwende den folgenden Code ein Dataset zu füllen:

Dim insertCommand As OracleCommand = New OracleCommand() 
Dim commandTextTemplate As String = "INSERT INTO {0}(" & g_pfldUsername & ", " & g_pfldSubject & ") VALUES (?, ?)" 
insertCommand.CommandText = String.Format(commandTextTemplate,TABLE_NAME) 
insertCommand.Connection = Me.Connection 
insertCommand.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter(g_pfldUsername, Oracle.DataAccess.Client.OracleDbType.Varchar2, 50, g_pfldUsername)) 
insertCommand.Parameters.Add(New Oracle.DataAccess.Client.OracleParameter(g_pfldSubject, Oracle.DataAccess.Client.OracleDbType.Varchar2, 50, g_pfldSubject)) 

_OracleDataAdapter.InsertCommand = insertCommand 

_OracleDataAdapter.Fill(_dataSet, TABLE_NAME) 

So nach diesen Code Debugging habe ich die folgende Fehler:

Objekt kann nicht von Typ 'Oracle.DataAccess.Client.OracleCommand' to type 'System.Data.Common.DbCommand'.

So stecken I`m hier und ich brauche ein wenig Hilfe, bitte ....

Vielen Dank im Voraus beraten ..

+0

Check 'Dim commandTextTemplate' ich glaube, Sie nicht korrekte Abfrage erstellen. refer [this] (http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracledataadapter.insertcommand.aspx). –

Antwort

0

@Davideg: mein Code C# Daten zu füllen set

OleDbConnection cnOra = new OleDbConnection("Provider=MSDAORA;Data Source=myOracleServer;" 
       + "user id=myUID;password=myPWD;" 
       + "persist security info=false;"); 
     OleDbCommand cmdPerson = new OleDbCommand 
     + ("{call PackPerson.allPerson({resultset 3, ssn, fname, lname})}", cnOra); 

    OleDbDataAdapter daPerson = new OleDbDataAdapter(cmdPerson); 
    cnOra.Open(); 
    DataSet ds = new DataSet(); 
    daPerson.Fill(ds,"Person"); 
    this.dataGrid1.DataSource = ds.Tables["Person"]; 
    cnOra.Close(); 
+0

Danke RD ... du stellst mir die beste Lösung zur Verfügung ... Ich frage mich nur, ob ich deine Ratschläge in einer kleinen Sache bekommen kann: Was sind die Oledb-Datentypen, die den Oracle-Datentypen entsprechen (Number, Varchar2, TimeStamp). ... Können Sie mir helfen, plz ... – Davideg

0
Function GetEmailsByPageName(ByVal pageName As String) As DataSet 
    Dim cn As New OracleConnection 
    Dim cmd As New OracleCommand 

    cn = New OracleConnection 
    cn.ConnectionString = (ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString) 

    cmd = New OracleCommand("ORACLEDBA.PACKAGE_EMAIL.SP_EMAIL_LISTING_BY_NAME") 
    cmd.CommandType = Data.CommandType.StoredProcedure 
    cmd.Connection = cn 
    cmd.BindByName = True 

    Dim paramCursor As OracleParameter = New OracleParameter("email_list_cursor", OracleDbType.RefCursor) 
    With cmd.Parameters 
     .Add(New OracleParameter("a_page_name", OracleDbType.Varchar2)).Value = pageName 
     .Add("a_err_code", OracleDbType.Int32, Data.ParameterDirection.Output) 
     .Add("a_err_msg", OracleDbType.Varchar2, 300).Direction = Data.ParameterDirection.Output 
     .Add(paramCursor).Direction = Data.ParameterDirection.Output 
    End With 

    Dim da As New OracleDataAdapter(cmd) 
    Dim dsEmail As DataSet = New DataSet 
    Try 
     da.SelectCommand = cmd 
     da.Fill(dsEmail) 
     Return dsEmail 
    Catch ex As Exception 
     Throw 
    Finally 
     da.Dispose() 
     cmd.Dispose() 
     cn.Dispose() 
     If cn.State = ConnectionState.Open Then 
      cn.Close() 
     End If 
    End Try 
End Function 
Verwandte Themen