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

来源:互联网 发布:网络电视伴侣软件 编辑:程序博客网 时间:2024/05/06 17:12

原文地址:http://blog.csdn.net/hnfeitianwugui/article/details/8905790


最近公司的项目从SqlServer传到oracle平台,底层的数据访问SQL需要改过,如:

在SqlServer下:

[csharp] view plain copy
  1. public void UpdateEhrInfo(EhrInfo model)  
  2.        {  
  3.            StringBuilder strSql = new StringBuilder();  
  4.            strSql.Append("update ehr_info set ");  
  5.   
  6.            strSql.Append("master_doctor=:master_doctor ,ehr_create_user=:ehr_create_user,modify_date=sysdate ");  
  7.   
  8.            strSql.Append(" where ehr_id=:ehr_id");  
  9.   
  10.            OracleParameter[] parms =   
  11.         {  
  12.                         DbHelper.MakeInParam(":ehr_create_user", OracleDbType.Varchar2,20, model.EhrCreateUser),  //顺序不一样  
  13.                         DbHelper.MakeInParam(":master_doctor", OracleDbType.Varchar2,20, model.MasterDoctor),  
  14.                         DbHelper.MakeInParam(":ehr_id", OracleDbType.Long, 0, model.EhrId),  
  15.                             DbHelper.MakeInParam("@ehr_create_date", OracleDbType.Varchar2,20, model.EhrCreateDate) //多余的参数   
  16.                        };   
  17.   
  18.                  DbHelper.ExecuteNonQuery(DataSource.EHR,CommandType.Text, strSql.ToString(), parms);   
  19.        }  

在oracle下跑以上的方法是会报错的,原因是:1.参数的顺序不一样 2.有多余的参数

对于参数顺序不一样,可以在实例化oracleCommand的时候,指定BindByName属性为true;

对于多余的参数目前只能删掉,很纳闷SqlServerCommand可以允许多余的参数存在,Oracle.DataAccess.dll提供的应该也可以啊!!还是坐等各位大牛解惑吧
0 0
原创粉丝点击