动态提交表单时,如何获取参数类型
如题,首先为什么要动态提交表单,我们经常需要遍历表单并提交数据,这样可以节省大量时间。
再者,为什么要使用参数方法提交,最主要的是参数方式提交可以增强安全性,避免注入式攻击,好处这里就不多说了
问题:动态提交时,不论是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);
}
{
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;
}
}
///返回字段的属性
/// </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 = "值";
xtpt1.Value = "值";
Ms Sql同上。
版权声明:本博文原创发表于博客园,作者博客:YuBinfeng's Technology Blog
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述