关于在Asp.net下使用Oracle.DataAccess.dll(Oracle10g)执行参数化Update无效的解决方案之一

  1. using Oracle.DataAccess.Client;  
  2. public static String ConnectionString = "Data Source=orcl;User ID=hr;Password=hr;";  
  3.   
  4. public static int Update(MacInfo model)  
  5.     {  
  6.         StringBuilder strSql = new StringBuilder();  
  7.         strSql.Append("update MacInfo set ");  
  8.         strSql.Append("Mac_Address=:Mac_Address,");  
  9.         strSql.Append("Mac_Status=:Mac_Status");  
  10.         strSql.Append(" where MacInfo_ID=:MacInfo_ID");  
  11.         //strSql.Append("Mac_Address='"+model.Mac_Address+"',");//拼凑Update字符串是可以执行成功的  
  12.         //strSql.Append("Mac_Status="+model.Mac_Status);  
  13.         //strSql.Append(" where MacInfo_ID='"+model.MacInfo_ID+"'");  
  14.     //这里注意,strSql中的Update语句参数顺序为:Mac_Address、Mac_Status、MacInfo_ID,所以下面OracleParameter  
  15.     //也必须按这个顺序来声明、赋值  
  16.         OracleParameter[] parameters = {                      
  17.                     new OracleParameter(":Mac_Address", OracleDbType.Varchar2,17),  
  18.                     new OracleParameter(":Mac_Status", OracleDbType.Int32,4),  
  19.                     new OracleParameter(":MacInfo_ID", OracleDbType.Varchar2,17)};  
  20.         parameters[0].Value = model.Mac_Address;  
  21.         parameters[1].Value = model.Mac_Status.ToString();  
  22.         parameters[2].Value = model.MacInfo_ID;  
  23.   
  24.         int result = ExecuteCommand(strSql.ToString(), CommandType.Text,parameters);  
  25.         return result;  
  26.     }  
  27. public static int ExecuteCommand(string queryString, CommandType commandType, params OracleParameter[] param)  
  28.     {  
  29.         int flag = 0;  
  30.         using(OracleConnection con = new OracleConnection(ConnectionString))  
  31.         {  
  32.             OracleCommand command = new OracleCommand(queryString, con);  
  33.             command.CommandType = commandType;  
  34.             if(param != null)  
  35.             {  
  36.                 for(int i = 0; i < param.Length; i++)  
  37.                 {  
  38.                     command.Parameters.Add(param[i]);  
  39.                 }  
  40.             }  
  41.             try  
  42.             {  
  43.                 command.Connection.Open();  
  44.                 flag = command.ExecuteNonQuery();                  
  45.             }  
  46.             catch(Exception ex)  
  47.             {  
  48.                 throw ex;  
  49.             }  
  50.             finally  
  51.             {  
  52.                 command.Connection.Close();  
  53.                 command.Dispose();  
  54.                 command = null;  
  55.             }  
  56.         }  
  57.         return flag;  
  58.     }  
posted @ 2012-01-29 12:49  与时俱进  阅读(1843)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈