為避免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 |
Oracle 只允許將 BFILE 綁定為 BFILE 參數。 如果您嘗試綁定一個非 BFILE 值(如 byte[] 或 OracleBinary),適用於 Oracle 的 .NET 資料提供者並不會自動為您構造這樣的值。 |
BLOB |
|
Blob |
Oracle 只允許將 BLOB 綁定為 BLOB 參數。 如果您嘗試綁定一個非 BLOB 值(如 byte[] 或 OracleBinary),適用於 Oracle 的 .NET 資料提供者並不會自動為您構造這樣的值。 |
CHAR |
AnsiStringFixedLength |
Char |
|
CLOB |
|
Clob |
Oracle 只允許將 CLOB 綁定為 CLOB 參數。 如果您嘗試綁定一個非 CLOB 值(如 System.String 或 OracleString),適用於 Oracle 的 .NET 資料提供者並不會自動為您構造這樣的值。 |
DATE |
DateTime |
DateTime |
|
FLOAT |
Single、Double、Decimal |
Float、Double、Number |
Size 確定 System.Data.DBType 和 OracleType。 |
INTEGER |
SByte、Int16、Int32、Int64、Decimal |
SByte、Int16、Int32、Number |
Size 確定 System.Data.DBType 和 OracleType。 |
INTERVAL YEAR TO MONTH |
Int32 |
IntervalYearToMonth |
只有在同時使用 Oracle 9i 用戶端和伺服器軟體時,OracleType 才可用。 |
INTERVAL DAY TO SECOND |
Object |
IntervalDayToSecond |
只有在同時使用 Oracle 9i 用戶端和伺服器軟體時,OracleType 才可用。 |
LONG |
AnsiString |
LongVarChar |
|
LONG RAW |
Binary |
LongRaw |
|
NCHAR |
StringFixedLength |
NChar |
|
NCLOB |
|
NClob |
Oracle 只允許將 NCLOB 綁定為 NCLOB 參數。 如果您嘗試綁定一個非 NCLOB 值(如System.String 或 OracleString),適用於 Oracle 的 NET 資料提供者並不會自動為您構造這樣的值。 |
NUMBER |
VarNumeric |
Number |
|
NVARCHAR2 |
String |
NVarChar |
|
RAW |
Binary |
Raw |
|
REF CURSOR |
|
Cursor |
有關更多資訊,請參見Oracle REF CURSOR。 |
ROWID |
AnsiString |
Rowid |
|
TIMESTAMP |
DateTime |
Timestamp |
只有在同時使用 Oracle 9i 用戶端和伺服器軟體時,OracleType 才可用。 |
TIMESTAMP WITH LOCAL TIME ZONE |
DateTime |
TimestampLocal |
只有在同時使用 Oracle 9i 用戶端和伺服器軟體時,OracleType 才可用。 |
TIMESTAMP WITH TIME ZONE |
DateTime |
TimestampWithTz |
只有在同時使用 Oracle 9i 用戶端和伺服器軟體時,OracleType 才可用。 |
UNSIGNED INTEGER |
Byte、UInt16、UInt32、UInt64、Decimal |
Byte、UInt16、Uint32、Number |
Size 確定 System.Data.DBType 和 OracleType。 |
VARCHAR2 |
AnsiString |
VarChar |
|