首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net在Oracle10g停Update参数化执行无效

2013-07-01 
asp.net在Oracle10g下Update参数化执行无效如题:1、使用的是10g自带的Oracle.DataAccess.dll文件2、如果直接

asp.net在Oracle10g下Update参数化执行无效
如题:
1、使用的是10g自带的Oracle.DataAccess.dll文件
2、如果直接使用拼凑字符串的方式拼凑Update语句,执行成功
3、使用参数化后执行不报错,但是没有修改成功

分析:既然参数化Update没有报错,在ExecuteCommand方法的flag = command.ExecuteNonQuery();中,应该是Update语句
      执行了,但是Where条件没有起作用还是怎么的,导致的Update没有更新任何数据,请有处理过相关情况的大虾指点
      下

贴上相关代码:


public static int Update(MacInfo model)
    {
        StringBuilder strSql = new StringBuilder();
        strSql.Append("update MacInfo set ");
        strSql.Append("Mac_Address=:Mac_Address,");
        strSql.Append("Mac_Status=:Mac_Status");
        strSql.Append(" where MacInfo_ID=:MacInfo_ID");
        //strSql.Append("Mac_Address='"+model.Mac_Address+"',");//拼凑Update字符串是可以执行成功的
        //strSql.Append("Mac_Status="+model.Mac_Status);
        //strSql.Append(" where MacInfo_ID='"+model.MacInfo_ID+"'");
        OracleParameter[] parameters = {
                    new OracleParameter(":MacInfo_ID", OracleDbType.Varchar2,17),
                    new OracleParameter(":Mac_Address", OracleDbType.Varchar2,17),
                    new OracleParameter(":Mac_Status", OracleDbType.Int32,4)};
        parameters[0].Value = model.MacInfo_ID;
        parameters[1].Value = model.Mac_Address;
        parameters[2].Value = model.Mac_Status;

        int result = DBHelper.ExecuteCommand(strSql.ToString(), CommandType.Text,parameters);
        return result;
    }
public static int ExecuteCommand(string queryString, CommandType commandType, params OracleParameter[] param)
    {
        int flag = 0;
        using(OracleConnection con = new OracleConnection(ConnectionString))
        {
            OracleCommand command = new OracleCommand(queryString, con);
            command.CommandType = commandType;
            if(param != null)
            {
                for(int i = 0; i < param.Length; i++)
                {
                    command.Parameters.Add(param[i]);


                }
            }
            try
            {
                command.Connection.Open();
                flag = command.ExecuteNonQuery();                
            }
            catch(Exception ex)
            {
                throw ex;
            }
            finally
            {
                command.Connection.Close();
                command.Dispose();
                command = null;
            }
        }
        return flag;
    }


[解决办法]
你把断点下在DBHelper.ExecuteCommand方法里面!

   
[解决办法]
 OracleParameter[] parameters = {
                    new OracleParameter(":MacInfo_ID", OracleDbType.Varchar2,17),
                    new OracleParameter(":Mac_Address", OracleDbType.Varchar2,17),
                    new OracleParameter(":Mac_Status", OracleDbType.Int32,4)};

--------------------------------------------
上面3个参数好像是不用加冒号“:”的,把它去掉试下。。。

热点排行