问题OracleDataAdapter填充DataSet [英] Issues OracleDataAdapter fill DataSet

查看:360
本文介绍了问题OracleDataAdapter填充DataSet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用OracleDataAdapter.Fill(数据集)函数时出现错误,这是我的代码,因此您可以看到没有语法错误



< pre lang =vb> 公共 功能 getList( ByVal pVar As String As DataSet
Dim ds 作为 DataSet()
Dim oraData As OracleDataAdapter = Nothing
尝试
使用命令 As OracleCommand(q_get_menu,AccesoDatosOracle.Instance)
A ccesoDatosOracle.Instance.Open()
command.CommandType = CommandType.StoredProcedure

Dim parm1 作为 OracleParameter = OracleParameter( pVAR,OracleDbType.Varchar2)
parm1.Direction = ParameterDirection.Input
parm1.Value = pVar
command.Parameters.Add(parm1)

Dim parm2 作为 OracleParameter = OracleParameter( pcur_tablapadre,OracleDbType.RefCursor)
parm2.Direction = ParameterDirection.Input
parm2.Value = DBNull.Value
command.Parameters.Add(parm2)

Dim parm3 作为 OracleParameter = OracleParameter( pcur_tablahijo,OracleDbType.RefCursor)
parm3.Direction = ParameterDirection.Input
parm3.Value = DBNull.Value
command.Parameters.Add(parm3)

command.BindByName = True
oraData = OracleDataAdapter(命令)
oraData.Fill(ds)

结束 使用
Catch ex 正如异常
Console.WriteLine( EL错误: + ex 。消息)
投掷 ex
最后
AccesoDatosOracle.Instance.Close()
结束 尝试

返回 ds
结束 功能





当调试行进入填充(ds)时出错,它表示内存中的空间已被占用。当我声明Dim ds As DataSet = Nothing表示它不能取空值。



我不知道这段代码有什么问题。



提前感谢

解决方案

我注意到我声明了2个这样的游标

。 Direction = ParameterDirection.Input 

而不是

。Direction = ParameterDirection.Output 





这是根本原因

不知道为什么VS .NET没有给我关于这个错误的反馈


替换它而不是

 Dim ds As New DataSet()



在你的第一行代码中声明数据集。

 Dim ds As System.Nullable(Of DateSet)= New DataSet()


I got an error when i used the OracleDataAdapter.Fill(Dataset) function, here is my code so you can see that there is no Syntax error

Public Function getList(ByVal pVar As String) As DataSet
        Dim ds As New DataSet()
        Dim oraData As OracleDataAdapter = Nothing
        Try
            Using command As New OracleCommand(q_get_menu, AccesoDatosOracle.Instance)
                AccesoDatosOracle.Instance.Open()
                command.CommandType = CommandType.StoredProcedure

                Dim parm1 As OracleParameter = New OracleParameter("pVAR", OracleDbType.Varchar2)
                parm1.Direction = ParameterDirection.Input
                parm1.Value = pVar
                command.Parameters.Add(parm1)

                Dim parm2 As OracleParameter = New OracleParameter("pcur_tablapadre", OracleDbType.RefCursor)
                parm2.Direction = ParameterDirection.Input
                parm2.Value = DBNull.Value
                command.Parameters.Add(parm2)

                Dim parm3 As OracleParameter = New OracleParameter("pcur_tablahijo", OracleDbType.RefCursor)
                parm3.Direction = ParameterDirection.Input
                parm3.Value = DBNull.Value
                command.Parameters.Add(parm3)

                command.BindByName = True
                oraData = New OracleDataAdapter(command)
                oraData.Fill(ds)

            End Using
        Catch ex As Exception
            Console.WriteLine("EL error es:  " + ex.Message)
            Throw ex
        Finally
            AccesoDatosOracle.Instance.Close()
        End Try

        Return ds
    End Function



When the debug line gets into the fill(ds) gives an error, it says that the space in the memory was already been occupied. When I declare Dim ds As DataSet = Nothing is says that it cannot take null value.

I don't know what is wrong with this code.

thanks in advance

解决方案

I noticed that i declared 2 cursors like this

.Direction = ParameterDirection.Input

instead of this

.Direction = ParameterDirection.Output



that was the underlying cause
Wonder why VS .NET doesn't give me the feedback about this error


Replace this Instead of

Dim ds As New DataSet()


in your first line of code to declare the dataset.

Dim ds As System.Nullable(Of DateSet) = New DataSet()


这篇关于问题OracleDataAdapter填充DataSet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆