標籤:
使用參數化 DbCommand 的一個缺點是需要參數的代碼將僅適用於支援相同文法的提供者。OLEDB、SqlClient 和 Oracle 提供者全部使用不同的文法。例如,用於命名和指定參數的 SQL 文法使用 @ 符號,OLEDB 參數文法需要使用問號 (?) 作為參數預留位置,而 Oracle 提供者使用冒號 (:)。
string sqlstr = " select * from table where [email protected] and [email protected] ";
System.Data.SqlClient.SqlParameter parameters = newSystem.Data.SqlClient.SqlParameter[2];
parameters[0] = new SqlParameter("@id", uid);
parameters[1] = new SqlParameter("@name", name);
string sqlstr = " select * from table where id=? and name=? ";
System.Data.OleDb.OleDbParameter parameters = new System.Data.OleDb.OleDbParameter[2];
parameters[0] = new OleDbParameter("id", uid);
parameters[1] = new OleDbParameter("name", name);
string sqlstr = " select * from table where id=:id and name=:name ";
System.Data.OracleClient.OracleParameter parameters = new System.Data.OracleClient.OracleParameter[2];
parameters[0] = new OracleParameter(":id", uid);
parameters[1] = new OracleParameter(":name", name);
c# 針對不同資料庫進行參數化查詢