日期:2014-05-17  浏览次数:20702 次

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++)
                {
       &nbs