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

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

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

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

 

posted @ 2010-11-10 09:53  yubinfeng  阅读(7172)  评论(0编辑  收藏  举报