数据库中的增删改查我们都已经非常熟悉了,可是有时候如果需要考虑到效率的问题,频繁的访问数据库会使程序的性能大幅度降低,有什么解决方法吗?既可以查询出所要的数据又不用频繁访问数据库,答案是有的。
我们通常所使用的DataTable对象就有增删改查的功能,具体如何实现我们通过一个小例子来说明。
DEMO
首先我们在Form1_Load事件中一次性查询出某张表的所有数据,并显示在datagridview中
<span style="font-size:18px;"><strong> //定义全局变量dt DataTable dt = new DataTable(); string connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString; SqlConnection conn = new SqlConnection(connStr); SqlDataAdapter ad = new SqlDataAdapter("select * from T_dataTable", conn); ad.Fill(dt); dataGridView1.DataSource = dt;</strong></span>窗体效果图如下:
下面,我们一次来进行增删改查的操作
<span style="font-size:18px;"><strong> #region 增加新行 DataRow dr = dt.NewRow(); dr["departmentId"] = "1"; dr["unitId"] = "2"; dr["listId"] = "3"; dr["rowId"] = "4"; dr["lineId"] = "5"; dr["data"] = "6"; dr["currentdate"] = "7"; dr["currenttime"] = "8"; dr["isDelete"] = "9"; dt.Rows.Add(dr); dataGridView1.DataSource = dt; #endregion</strong></span>效果图如下:
<span style="font-size:18px;"><strong> #region 删除departmentId列 dt.Columns.Remove(dt.Columns["departmentId"]); #endregion</strong></span>效果图如下:
<span style="font-size:18px;"><strong> #region 更改departmentId为1 for (int i = 0;i<dt.Rows.Count; i++) { DataRow dr = dt.Rows[i]; dr.BeginEdit(); dr["departmentId"]="1"; dr.EndEdit(); } dataGridView1.DataSource = dt; #endregion</strong></span>效果图如下:
<span style="font-size:18px;"><strong> #region datatable查询rowID = 12的记录 //克隆dt的结构 DataTable dt1 = dt.Clone(); DataRow[] dr = dt.Select("rowID=" + "12"); for (int i = 0; i < dr.Length; i++) { //将每行的内容复制到dt1中 dt1.ImportRow((DataRow)dr[i]); } dataGridView1.DataSource = dt1; #endregion</strong></span>效果图如下:
如果涉及到效率问题的话,这个知识点会帮我们解决大问题。有不合理的地方,欢迎大牛斧正。