数据库中的增删改查我们都已经非常熟悉了,可是有时候如果需要考虑到效率的问题,频繁的访问数据库会使程序的性能大幅度降低,有什么解决方法吗?既可以查询出所要的数据又不用频繁访问数据库,答案是有的。
我们通常所使用的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>
效果图如下:
如果涉及到效率问题的话,这个知识点会帮我们解决大问题。有不合理的地方,欢迎大牛斧正。