static string sqlselect = "insert into {0}({1}) values ({2})"; (这个方法能够适用于任何数据库的插入语句) public static int managerRegister<T>(T field) { string fieldName = ""; string fieldList = ""; string fieldValue = ""; int k = 0; 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 + 1;//当循环执行时k加一使得数组可以连续获取到字段 } fieldList = fieldList.Substring(0, fieldList.Length - 1);//去除最后一个逗号 fieldValue = fieldValue.Substring(0, fieldValue.Length - 1); sqlselect = string.Format(sqlselect, fieldName, fieldList, fieldValue); int value = DBhelper.ExcuteQuery(sqlselect, para.ToArray());//调用本身写的一个数据库插入语句并返回一个值 return value;//返回插入语句的状况 }
如下是个人数据库字段
下面是个人插入语句html
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 -1; } }
下面是调用界面sql
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 > 0) { Response.Write("<script>alert(\"注册成功!\")</script>"); Response.Redirect("index.aspx"); } else { Response.Write("<script>alert(\"注册失败!请检查用户名或密码后重试!\")</script>"); } } else { Response.Write("<script>alert(\"请检查用户名或密码!\")</script>"); } }
插入页面的效果数据库
反射得到字段,实际上是浪费资源性能的作法,可是有些时候为了少写代码,仍是会用到反射,这只是个最基础的例子,数组
别看界面作的好看,可是内部仍是挺乱的,最后补充反射的原理性能
在运行状态中,对于任意一个类,都可以获取到这个类的全部属性和方法,对于任意一个对象,都可以调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为反射机制。通俗点讲,经过反射,类对咱们来讲是彻底透明的,想要获取任何东西均可以。spa
对于反射说明我随机挑选了一个不错的例子供你们参考:https://www.cnblogs.com/sxw117886/p/5687590.htmlcode
原做者:幻影星辰orm
反射我前面有一个图片,一个C#程序运行时是先通过编译器编译后通过IL编译以后到JIT/CLR最后再到二进制能被机器所认识的代码htm
其实反射是从内存中反向得到assembly!对象
其他的之后再补充。