1. 程式人生 > >C# 使用Oracle.DataAccess.dll注意事項

C# 使用Oracle.DataAccess.dll注意事項

最近公司的專案從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提供的應該也可以啊!!還是坐等各位大牛解惑吧