GettingStarted
GettingStarted

Reputation: 7605

OracleParameter parameter constructor with VarChar object

.Parameters.Add("Notes", OracleClient.OracleType.VarChar, 3000).Value = strBoxNotes

The Error produced says

Severity    Code    Description Project File    Line    Suppression State
Error   BC30519 Overload resolution failed because no accessible 'Add' can be called without a narrowing conversion:
    'Public Overloads Function Add(name As String, dbType As OracleDbType, direction As ParameterDirection) As OracleParameter': Argument matching parameter 'dbType' narrows from 'OracleType' to 'OracleDbType'.
    'Public Overloads Function Add(name As String, dbType As OracleDbType, direction As ParameterDirection) As OracleParameter': Argument matching parameter 'direction' narrows from 'Integer' to 'ParameterDirection'.
    'Public Overloads Function Add(name As String, dbType As OracleDbType, size As Integer) As OracleParameter': Argument matching parameter 'dbType' narrows from 'OracleType' to 'OracleDbType'.  ProjectName C:\Projects\frm_Main.vb 492 Active

When I peak at the definition

Public Function Add(name As String, dbType As OracleDbType, direction As ParameterDirection) As OracleParameter <- The one the IDE thinks I want
Public Function Add(name As String, dbType As OracleDbType, val As Object, dir As ParameterDirection) As OracleParameter
Public Function Add(name As String, dbType As OracleDbType, size As Integer, val As Object, dir As ParameterDirection) As OracleParameter
Public Function Add(name As String, dbType As OracleDbType, size As Integer) As OracleParameter <-- The one I want

How do I force the IDE to choose the constructor I want?

Upvotes: 0

Views: 812

Answers (2)

Mary
Mary

Reputation: 15091

Just installed Nuget version 19.6.0 of Oracle.ManagedDataAccess

I found that OracleType.VarChar is now OracleDbType.Varchar2 with this change you can use the parameters of the .Add method without names.

Imports Oracle.ManagedDataAccess.Client

Private Sub OPCode()
    Using cn As New OracleConnection("Your Connection String")
        Using cmd As New OracleCommand("Select * From Employees Where Name = @Name;", cn)
            cmd.Parameters.Add("@Name", OracleDbType.Varchar2, 3000)
        End Using
    End Using
End Sub

The Object Browser will you show you the parameters.

Upvotes: 0

G3nt_M3caj
G3nt_M3caj

Reputation: 2685

Try adding parameters with parameter name in an explicit mode avoiding IDE choices like this:

 .Parameters.Add(name:="Notes", dbType:=OracleClient.OracleType.VarChar, size:=3000).Value = strBoxNotes

Upvotes: 1

Related Questions