博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库查询集与反射的应用(自己写的小例子)
阅读量:6992 次
发布时间:2019-06-27

本文共 3390 字,大约阅读时间需要 11 分钟。

(与随笔 DataGridView动态绑定combox列,checkbox列(仿照老大的代码自己写的一个小例子供自己以后参考) (2013-04-02 11:14 相关)                                                                           )

查询数据库,每一条数据是一个对象,返回一个List<object>,将查询到的多个对象放到List<object>中,将该List绑定到Datagridview中。

数据库查询,将每条记录通过反射写入一个对象代码如下(注意数据库和类的相应字段的名称需要一致):

View Code
#region        ///         /// 得到所有数据列表 利用了反射,所以要求类的属性名称必须和数据库中的相应字段名称相同        ///         ///         /// 
public static List GetAll(Object obj, string SQL) { List oneList = new List();//定义一个对象list Type objtype = obj.GetType();//获取指定名称的类型 object entity = Activator.CreateInstance(objtype, null);//创建指定类型实例 PropertyInfo[] fields = entity.GetType().GetProperties();//获取指定对象的所有公共属性 using (SqlConnection con = GetCon()) { try { //从数据库选取数据集 if (con.State == ConnectionState.Closed) { con.Open(); } #region 测试存储过程用 ///调用存储过程 //SqlCommand cmd = new SqlCommand("proc_findStudentByName", con); //cmd.CommandType = CommandType.StoredProcedure; //cmd.Parameters.Clear(); //cmd.Parameters.AddWithValue("@name", "%石%"); //cmd.Parameters.AddWithValue("@nextName", "%"); ////string a= cmd.ExecuteScalar().ToString(); //SqlDataReader dr1 = cmd.ExecuteReader(); //DataTable dt1 = new DataTable(); //dt1.Load(dr1); //for (int i = 0; i < dt1.Rows.Count; i++) //{ // for (int j = 0; j < dt1.Columns.Count; j++) // { // string str = dt1.Rows[i][j].ToString(); // } //} //// #endregion SqlDataAdapter da = new SqlDataAdapter(SQL, con); DataSet ds = new DataSet();//创建DataSet实例 da.Fill(ds, "Table"); DataTable dt= ds.Tables["Table"]; ///// ////通过反射动态给实体属性赋值 foreach (DataRow dr in dt.Rows) { object oneObject = Activator.CreateInstance(objtype, null);//创建指定类型实例 foreach (DataColumn dc in dt.Columns) { foreach (PropertyInfo t in fields) { if (dc.ColumnName == t.Name) { t.SetValue(oneObject, dr[dc.ColumnName], null);//给对象赋值 break; } } } oneList.Add(oneObject);/////将一个实体对象放入List } } catch { } } return oneList; } #endregion

 调用时,需要定义你需要的对象,定义你需要的sql语句,然后调用该方法,返回一个List<object>对象,把它绑定到DGV(datagridview)上。

string sql = "select * from TB_Student";//你需要的sql语句            Student stu = new Student();//定义对象            DGV.DataSource = DALStudent.GetAll(stu, sql);//调用

 

转载于:https://www.cnblogs.com/sevennight99/archive/2013/04/03/2997674.html

你可能感兴趣的文章
python开发_函数的参数传递
查看>>
利用mysqldump 实现每天备份方案
查看>>
一周一世界,一世一漂泊
查看>>
屏保:画圈圈诅咒你
查看>>
(转)连接(内、左、右、外、交叉)查询
查看>>
基于Flot可放缩的折线图
查看>>
Redis debugging guide---官方
查看>>
LINQ
查看>>
微信支付宝
查看>>
Android下用Activity实现圆角的自定义弹窗
查看>>
MAVEN创建JAVA的Web工程
查看>>
paip.提升效率--gui 的选择--swing最佳实践swt awt
查看>>
WPF之资源字典zz
查看>>
C/C++中printf/cout 计算顺序与缓冲区问题
查看>>
IE11下Forms身份认证无法保存Cookie的问题
查看>>
[复变函数]第21堂课 6 留数理论及其应用 6. 1 留数
查看>>
easyui datagrid列中使用tooltip
查看>>
【C语言】练习2-1
查看>>
深入分析 Java 中的中文编码问题
查看>>
设计模式初学者笔记:Builder模式
查看>>