为避免
SQL-注入,所有的update,insert,delete,select全部使用带参数的形式编写
Update TableName Set FiledName=:Fd1 where Id=:Id
ID
Oracle类型是 Varchar2对应DbType.String
问题来了
,由于类型映射不匹配
,导致在执行
SQL时
Oracle会自动转换类型,这样直接导致无法使用到索引(全部全表扫描),所以update,delete时效率特别差
后修改代码
ID Oracle类型是 Varchar2对应DbType.AnsiString
问题解决了,可以用使用到索引
。 Oracle 数据类型 要绑定为参数的 DbType 枚举 要绑定为参数的 OracleType 枚举
BFILE
BFile
BLOB
Blob
CHAR
AnsiStringFixedLength
Char
CLOB
Clob
DATE
DateTime
DateTime
FLOAT
Single、Double、Decimal
Float、Double、Number
INTEGER
SByte、Int16、Int32、Int64、Decimal
SByte、Int16、Int32、Number
INTERVAL YEAR TO MONTH
Int32
IntervalYearToMonth
INTERVAL DAY TO SECOND
Object
IntervalDayToSecond
LONG
AnsiString
LongVarChar
LONG RAW
Binary
LongRaw
NCHAR
StringFixedLength
NChar
NCLOB
NClob
NUMBER
VarNumeric
Number
NVARCHAR2
String
NVarChar
RAW
Binary
Raw
REF CURSOR
Cursor
ROWID
AnsiString
Rowid
TIMESTAMP
DateTime
Timestamp
TIMESTAMP WITH LOCAL TIME ZONE
DateTime
TimestampLocal
TIMESTAMP WITH TIME ZONE
DateTime
TimestampWithTz
UNSIGNED INTEGER
Byte、UInt16、UInt32、UInt64、Decimal
Byte、UInt16、Uint32、Number
VARCHAR2
AnsiString
VarChar
OracleParameter 对象的 Value 属性使用的 InputOutput、Output 和 ReturnValue ParameterDirection 值是 .NET Framework 数据类型,除非输入值是 Oracle 数据类型(例如 OracleNumber 或 OracleString)
。这并不适用于 REF CURSOR、BFILE 或 LOB 数据类型。