C# 使用Oracle.DataAccess.dll注意事項
阿新 • • 發佈:2018-11-21
最近公司的專案從SqlServer傳到oracle平臺,底層的資料訪問SQL需要改過,如:在SqlServer下:
public void UpdateEhrInfo(EhrInfo model) { StringBuilder strSql = new StringBuilder(); strSql.Append("update ehr_info set "); strSql.Append("master_doctor=:master_doctor ,ehr_create_user=:ehr_create_user,modify_date=sysdate "); strSql.Append(" where ehr_id=:ehr_id"); OracleParameter[] parms = { DbHelper.MakeInParam(":ehr_create_user", OracleDbType.Varchar2,20, model.EhrCreateUser), //順序不一樣 DbHelper.MakeInParam(":master_doctor", OracleDbType.Varchar2,20, model.MasterDoctor), DbHelper.MakeInParam(":ehr_id", OracleDbType.Long, 0, model.EhrId), DbHelper.MakeInParam("@ehr_create_date", OracleDbType.Varchar2,20, model.EhrCreateDate) //多餘的引數 }; DbHelper.ExecuteNonQuery(DataSource.EHR,CommandType.Text, strSql.ToString(), parms); }
在oracle下跑以上的方法是會報錯的,原因是:1.引數的順序不一樣 2.有多餘的引數
對於引數順序不一樣,可以在例項化oracleCommand的時候,指定BindByName屬性為true;
對於多餘的引數目前只能刪掉,很納悶SqlServerCommand可以允許多餘的引數存在,Oracle.DataAccess.dll提供的應該也可以啊!!還是坐等各位大牛解惑吧