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提供的应该也可以啊!!还是坐等各位大牛解惑吧


猜你喜欢

转载自blog.csdn.net/hnfeitianwugui/article/details/8905790
今日推荐