zoukankan      html  css  js  c++  java
  • Access里的变量使用与Sql语句里变量对应问题


    /*****************************
    *
    *Done By dayfrom klete ;
    *
    ********************************/


     Sql语句 :
    UPDATE tbl_Products SET pName = [@pName], pIntro = [@pIntro], pMarketPrice = [@pMarketPrice], pPreferentialPrice = [@pPreferentialPrice]
    WHERE pId=[@pId];

     产品更新函数

     public bool ProductUpdate(dProduct one)
      {
       OleDbCommand sqlCmd = new OleDbCommand();

       AddParamToSQLCmd(sqlCmd, "@pName", OleDbType.VarChar, 50, ParameterDirection.Input, one.PName);
       AddParamToSQLCmd(sqlCmd, "@pIntro", OleDbType.LongVarWChar,one.PIntroduction.Length , ParameterDirection.Input, one.PIntroduction);
       AddParamToSQLCmd(sqlCmd, "@pMarketPrice", OleDbType.Single, 8, ParameterDirection.Input,one.PMarketPrice);
       AddParamToSQLCmd(sqlCmd, "@pPreferentialPrice", OleDbType.Single, 8, ParameterDirection.Input, one.PPreferentialPrice);
       AddParamToSQLCmd(sqlCmd, "@pId", OleDbType.Integer, 0, ParameterDirection.Input, one.PId);

       this.SetCommandType(sqlCmd,CommandType.StoredProcedure,SP_PRODUCTS_PRODUCTS_UPDATE);

     

    /*
       AddParamToSQLCmd(sqlCmd, "@pId", OleDbType.Integer, 0, ParameterDirection.Input, one.PId);
       AddParamToSQLCmd(sqlCmd, "@pName", OleDbType.VarChar, 50, ParameterDirection.Input, one.PName);
       AddParamToSQLCmd(sqlCmd, "@pIntro", OleDbType.LongVarWChar,one.PIntroduction.Length , ParameterDirection.Input, one.PIntroduction);
       AddParamToSQLCmd(sqlCmd, "@pMarketPrice", OleDbType.Single, 8, ParameterDirection.Input,one.PMarketPrice);
       AddParamToSQLCmd(sqlCmd, "@pPreferentialPrice", OleDbType.Single, 8, ParameterDirection.Input, one.PPreferentialPrice);

       this.SetCommandType(sqlCmd,CommandType.StoredProcedure,SP_PRODUCTS_PRODUCTS_UPDATE);
    */

      
       return (this.ExecuteNonQuery(sqlCmd) == 1 );
      
      }

     测试结果
     如果更新函数是绿色部分,将无法对产品进行更新,主要原因是

      初步认为OleDbParameter[]的参数使用顺序与sql语句里的参数使用顺序必须是对应的,在access里面。。  

      但如果是sql2000里使用(SqlParameter[]),参数顺序则不会有影响。。 

     附上:AddParamToSQLCmd方法,不知是不是这个方法有问题

    private void AddParamToSQLCmd(OleDbCommand sqlCmd, string paramId, OleDbType sqlType, int paramSize, ParameterDirection paramDirection, object paramvalue)
      {
       // Validate Parameter Properties
       if (sqlCmd == null)
        throw (new ArgumentNullException("sqlCmd"));
       if (paramId == string.Empty)
        throw (new ArgumentOutOfRangeException("paramId"));

       // Add Parameter
       OleDbParameter newSqlParam = new OleDbParameter();
       newSqlParam.ParameterName = paramId;
       newSqlParam.OleDbType = sqlType;
       newSqlParam.Direction = paramDirection;

       if (paramSize > 0)
        newSqlParam.Size = paramSize;

       if (paramvalue != null)
        newSqlParam.Value = paramvalue;

       sqlCmd.Parameters.Add(newSqlParam);
      }


     

  • 相关阅读:
    Linux 文件隐藏属性-创建文件默认权限
    Linux 文件权限管理
    Linux 用户管理_用户相关配置文件详解
    Linux 压缩包管理
    vim 编辑器高级用法
    Linux ll查看文件属性详解-软硬链接详解
    安卓学习28
    安卓学习27
    安卓学习26
    安卓学习25
  • 原文地址:https://www.cnblogs.com/day/p/134698.html
Copyright © 2011-2022 走看看