如何从oracle.dataaccess.client.oracledataadapter填充system.data.dataset?

时间:2012-04-03 13:56:56

标签: vb.net

问候语,

我已在服务器上安装了Oracle 10g Express Edition数据库,并在我的PC上安装了客户端。

现在,我正在使用visual studio 2005开发一个vb.net应用程序,我需要使用oracle 10g express edition数据库。所以我使用以下连接字符串初始化连接:

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

然后我定义了新的OracleDataAdapter,并使用以下代码填充数据集:

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)

因此在调试此代码后,我收到以下错误:

无法将“Oracle.DataAccess.Client.OracleCommand”类型的对象强制转换为“System.Data.Common.DbCommand”。

所以我被困在这里,我需要一些帮助,请指教....

提前致谢..

2 个答案:

答案 0 :(得分:0)

@Davideg:我的代码是c#来填充数据集

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();

答案 1 :(得分: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