static string sqlselect = "insert into {0}({1}) values ({2})";
(这个方法可以适用于任何数据库的插入语句)
public static int managerRegister<T>(T field) {
string fieldName = "";
string fieldList = "";
string fieldValue = "";
int k = ;
Type tf = typeof(T);
fieldName = tf.Name;//获取类型名称
PropertyInfo[] pinfo = tf.GetProperties();//获取属性
string[] paraList = new string[pinfo.Length];//参数化查询字段的数组
List<SqlParameter> para = new List<SqlParameter>();//用于放置参数化查询
foreach (PropertyInfo p in pinfo)
{
fieldList += p.Name + ",";
fieldValue += "'" + p.GetValue(field).ToString() + "'" + ",";
paraList[k] = p.Name;
para.Add(new SqlParameter("@" + paraList[k], fieldValue));
k = k + ;//当循环执行时k加一使得数组能够连续获取到字段
}
fieldList = fieldList.Substring(, fieldList.Length - );//去除最后一个逗号
fieldValue = fieldValue.Substring(, fieldValue.Length - );
sqlselect = string.Format(sqlselect, fieldName, fieldList, fieldValue);
int value = DBhelper.ExcuteQuery(sqlselect, para.ToArray());//调用自己写的一个数据库插入语句并返回一个值
return value;//返回插入语句的情况
}
以下是我的数据库字段


下面是我的插入语句

public static int ExcuteQuery(string sql, SqlParameter[] para) {
int value;
SqlCommand cmd = SqlCmd(sql);
cmd.Parameters.AddRange(para);
try
{
value = cmd.ExecuteNonQuery();
return value;
}
catch
{
return -;
}
}

下面是调用界面

protected void Btn_Save_Click(object sender, EventArgs e)
{
Bc_Login a = new Bc_Login() { username = txt_Username.Text, pwd = txt_Repassword.Text };
if (txt_Password.Text != "" && txt_Username.Text != "" && txt_Repassword.Text != "")
{
int value = ManagerRegister.managerRegister<Bc_Login>(a);
if (value > )
{
Response.Write("<script>alert(\"注册成功!\")</script>");
Response.Redirect("index.aspx");
}
else
{
Response.Write("<script>alert(\"注册失败!请检查用户名或密码后重试!\")</script>");
}
}
else {
Response.Write("<script>alert(\"请检查用户名或密码!\")</script>");
}
}

插入页面的效果

反射获得字段,其实是浪费资源性能的做法,但是有些时候为了少写代码,还是会用到反射,这只是个最基础的例子,

别看界面做的好看,但是内部还是挺乱的,最后补充反射的原理

在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为反射机制。通俗点讲,通过反射,类对我们来说是完全透明的,想要获取任何东西都可以。

对于反射说明我随机挑选了一个不错的例子供大家参考:https://www.cnblogs.com/sxw117886/p/5687590.html

原作者:幻影星辰

反射我前面有一个图片,一个C#程序运行时是先经过编译器编译后经过IL编译之后到JIT/CLR最后再到二进制能被机器所认识的代码

其实反射是从内存中反向获得assembly

其余的以后再补充。

C#反射获取数据库字段的更多相关文章

  1. MSSQL 获取数据库字段类型

    SELECT col.name AS 列名, typ.name as 数据类型, col.max_length AS 占用字节数, col.precision AS 数字长度, col.scale A ...

  2. java通过反射获取bean字段注解@Column中的信息

    直接上代码吧: Field field; Field[] fields=clas.getDeclaredFields(); for (int i = 0; i <fields.length ; ...

  3. mysql数据库连接池使用(三)数据库元数据信息反射数据库获取数据库信息

    1.1. mysql数据库连接池使用(三)数据库元数据信息反射数据库获取数据库信息 有时候我们想要获取到数据库的基本信息,当前程序连接的那个数据库,数据库的版本信息,数据库中有哪些表,表中都有什么字段 ...

  4. Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)

    反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强 ...

  5. Java-Reflection反射-获取包括父类在内的所有字段

    前言 今天Android移动端要加个新功能,所以回归Android程序员的身份.开发的过程中,发现了之前的代码写的有很多问题,真的应该把时间抽出来重构一下了. 其中有反射的一个坑,工具类某方法反射获取 ...

  6. 浏览器中上传Excel文件,服务器获取Excel字段。写入的数据库中。操作Excel的方式jxl和poi。

    从Excel中获取字段,官方给我们提供了方法,地址https://poi.apache.org/components/spreadsheet/quick-guide.html#CellContents ...

  7. go语言通过反射获取和设置结构体字段值的方法

    本文实例讲述了go语言通过反射获取和设置结构体字段值的方法.分享给大家供大家参考.具体实现方法如下: type MyStruct struct { N int } n := MyStruct{ 1 } ...

  8. sql获取数据库的所有表以及名称字段

    获取数据库中所有的表 SELECT SysObjects.name AS Tablename FROM sysobjects WHERE xtype = 'U' 获取数据库中所有表的列名 SELECT ...

  9. C#通过反射获取对象属性,打印所有字段属性的值

    获取所有字段的值: public void PrintProperties(Object obj) { Type type = obj.GetType(); foreach( PropertyInfo ...

随机推荐

  1. CDOJ 1324 卿学姐与公主(分块)

    CDOJ 1324 卿学姐与公主(分块) 传送门: UESTC Online Judgehttp://acm.uestc.edu.cn/#/problem/show/1324 某日,百无聊赖的卿学姐打 ...

  2. 54. Extjs组件render说明

    转自:http://blog.chinaunix.net/uid-450400-id-2119168.html 1. 1.调用组件的render方法 panel.render('div'); 2.在配 ...

  3. JavaScript(JS)的简单使用

    一.什么是JS(Javascript)? Javascript是一种脚本语言,被广泛用于Web应用开发,常用来为网页添加各式各样的功能,为用户提供更加流畅的浏览效果. Javascript严格区分大小 ...

  4. Akka源码分析-Actor发消息

    前面两篇文章简单介绍了ActorSystem.actor以及dispatcher和mailbox的创建,下面我们就来看一下actor发消息的内部机制. val system = ActorSystem ...

  5. Python细节(一)深浅拷贝

    深浅拷贝 只要涉及拷贝,就会涉及创建新对象 浅拷贝,会创建一个新的容器,列表中的元素和原列表的元素用的是同一个内存空间 第一种方法:从头切到尾,完整的复制一份 lst = [1,2,3,4] lst1 ...

  6. Codeforces 803G Periodic RMQ Problem ST表+动态开节点线段树

    思路: (我也不知道这是不是正解) ST表预处理出来原数列的两点之间的min 再搞一个动态开节点线段树 节点记录ans 和标记 lazy=-1 当前节点的ans可用  lazy=0 没被覆盖过 els ...

  7. 【LeetCode】-- 260. Single Number III

    问题描述: https://leetcode.com/problems/single-number-iii/ 在一个数组里面,只有两个元素仅出现过1次,其余都出现过两次.找出出现仅一次的那两个(a, ...

  8. vue 中展示PDF内容

    vue 中展示PDF内容 不久前有个需要改的需求,以前是直接根据链接让用户下载对应pdf文件来查看,最主要是给用户查看,然而这种并不是很安全的,其他用户可以进行下载或者使用pdf链接分享给其他人,所以 ...

  9. 如何调用com组件中包含IntPtr类型参数的函数

    背景 公司的支付平台最近对接了西安移动的支付接口,接口中签名的方法是对方提供了一个com组件,组件中包含了一个签名的方法和一个验签的方法,注册了签名之后,在vs中进行了引用,引用之后,查看组件的定义如 ...

  10. [转]Wote用python语言写的imgHash.py

    #!/usr/bin/python import glob import os import sys from PIL import Image EXTS = 'jpg', 'jpeg', 'JPG' ...