zoukankan      html  css  js  c++  java
  • 动态提交表单时,如何获取参数类型

        如题,首先为什么要动态提交表单,我们经常需要遍历表单并提交数据,这样可以节省大量时间。

        再者,为什么要使用参数方法提交,最主要的是参数方式提交可以增强安全性,避免注入式攻击,好处这里就不多说了

        问题:动态提交时,不论是ms sql 还是 oracle 都需要知道参数类型,如何动态获取参数类型。

        直接贴代码:

    代码
     public OracleType FieldOracleType(string field, string table)
            {

                
    string type = FieldAttribute(field, table).Rows[0][0].ToString().ToLower() ;

                
    string[] types = Enum.GetNames(typeof(OracleType));
                
    foreach (string lx in types)
                {
                    
    if (type == lx.ToLower())
                    {
                        type 
    = lx;
                        
    break;
                    }
                    
    else if (type == "varchar2" | type == "nvarchar2")
                    {
                        type 
    = "VarChar";
                        
    break;
                    }
                    
    else if (type == "date")
                    {
                        type 
    = "DateTime";
                        
    break;
                    }
                    
    else if (type.IndexOf("TIMESTAMP".ToLower()) >= 0)
                    {
                        type 
    = "DateTime";
                        
    break;
                    }
                }

                
    return (OracleType)Enum.Parse(typeof(OracleType), type);

            }

      

    如上,通过这个方法,我们只需要传表和字段名,就可以轻公获到参数类型,

    其中public DataTable FieldAttribute(string field, string table)方法是返回字段属性的

    如下:

    代码
            /// <summary>
            
    ///返回字段的属性
             
    /// </summary>
            
    /// <param name="field"></param>
            
    /// <param name="table"></param>
            
    /// <returns></returns>
            public DataTable FieldAttribute(string field, string table)
            {
                
    if (ColumnExists(table, field))
                {
                    
    string sql = "select data_type,user_tab_columns.DATA_LENGTH,user_tab_columns.DATA_PRECISION,user_tab_columns.DATA_SCALE  from user_tab_columns where table_name ='" + table.ToUpper() + "' and user_tab_columns.COLUMN_NAME='" + field.ToUpper() + "'";
                    DataTable dt 
    = Query(sql).Tables[0];
                    
    return dt;

                }
                
    else
                {
                    
    return null;
                }
            }

    调于示例:

     OracleParameter xtpt1 = new OracleParameter("参数名", bllcom.FieldOracleType("字段名", 表名));
     xtpt1.Value 
    = "";
     

    Ms Sql同上。

  • 相关阅读:
    Eureka系列---【Eureka配置详解】
    bat脚本系列---【自动以管理员身份运行bat脚本】
    bat脚本系列---【批量修改文件名】
    我爱java系列---【微信定时自动发送消息功能】
    我爱java系列---【idea中如何使用git】
    我爱java系列---【Java将字符串的首字母转换大小写】
    我爱java系列---【java对象比较器,用于记录修改操作时修改的具体详情】
    我爱java系列---【项目研发流程——一张图搞定】
    Majority Number III
    G面经prepare: Straight Partition of A Deck of Cards
  • 原文地址:https://www.cnblogs.com/yubinfeng/p/1873299.html
Copyright © 2011-2022 走看看