动态提交表单时,如何获取参数类型
时间:2010-11-10 来源:yubinfeng
再者,为什么要使用参数方法提交,最主要的是参数方式提交可以增强安全性,避免注入式攻击,好处这里就不多说了
问题:动态提交时,不论是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同上。
相关阅读 更多 +