• 动态提交表单时,如何获取参数类型


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

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

        问题:动态提交时,不论是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同上。

  • 相关阅读:
    C++ 11 Lambda表达式
    Hello word!
    nginx 官方文档翻译
    Http读书笔记1-5章
    ROM、RAM、DRAM、SRAM和FLASH的区别
    优化专题
    Typescript学习
    canvas实现的粒子效果
    【转载】js常用方法和片段
    【转载】图解正向代理、反向代理、透明代理
  • 原文地址:https://www.cnblogs.com/yubinfeng/p/1873299.html
Copyright © 2020-2023  润新知