【散分】【分享】DataTable 添加列、设置主键、添加行、查询、更新

柳晛 2009-10-10 01:43:16
对于数据库的操作,资料太多,大家也比较熟悉。
但有时数据量较少,但更新频繁的变量操作,通常采用自定义结构,但自定义结构的可维护性和灵活性就比不上临时表,我们可以先用DataTable做为内存临时表,以数据库操作的方式灵活添加列、行,完成 主键设置、查询、更新等操作,还可以保存为xml文件。

假设在当前类作用域有全局对象

public static DataTable dtRefresh = new DataTable();

我们在某个测试函数中添加下面的测试代码:

为了方便存储为xml文件,需要设置表名:

dtRefresh.TableName = "刷新任务";
为临时表添加表结构,既列名:

dtRefresh.Columns.Add("数量", typeof(int));
dtRefresh.Columns.Add("频率", typeof(int));
dtRefresh.Columns.Add("自动关闭延迟", typeof(int));
dtRefresh.Columns.Add("Url", typeof(string));
设置其中一个列Url为主键:

DataColumn[] clos = new DataColumn[1];
clos[0] = dtRefresh.Columns["Url"];
dtRefresh.PrimaryKey = clos;
为表添加一行测试记录:
注意:添加行时,应先声明行,在需要用时再赋予对象实体,这样的目的是为了突出每次添加新行时,只需赋予一个dtRefresh.NewRow()返回的对象即可,而不用重新声明一个行对象名。因为类操作是传引用,如果一个行对象名赋予一个表,再修改这个对象名的内容,表中内容会跟着修改,所以每次添加行时要重用行名但避免重用对象。

DataRow dr;
dr = dtRefresh.NewRow();
dr["数量"] = 100;
dr["频率"] = 100;
dr["自动关闭延迟"] = 100;
dr["Url"] = "http://www.baidu.com/";
dtRefresh.Rows.Add(dr);
执行查询:

DataRow[] drArr = dtRefresh.Select("Url = \'http://www.baidu.com/\'");

foreach (var item in drArr)
{
txb.Text += item["Url"].ToString() + Environment.NewLine;
}
根据查询条件,更新记录:

DataRow[] drArr = dtRefresh.Select("Url = \'http://www.baidu.com/\'");

drArr[0]["Url"] = "g.cn";

foreach (var item in drArr)
{
txb.Text += item["Url"].ToString() + Environment.NewLine;
}
写入XML文件:

dtRefresh.WriteXml(@"d:\1.xml");
...全文
1193 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziyan688999 2010-09-14
  • 打赏
  • 举报
回复
支持支持,可惜没分了
LutzMark 2009-10-16
  • 打赏
  • 举报
回复
支持
ximengchang 2009-10-16
  • 打赏
  • 举报
回复
jf
柳晛 2009-10-16
  • 打赏
  • 举报
回复
qlzf11140820 2009-10-16
  • 打赏
  • 举报
回复
up
jiakehuigui 2009-10-16
  • 打赏
  • 举报
回复
接分
cadtian 2009-10-16
  • 打赏
  • 举报
回复
tianshangfei 2009-10-16
  • 打赏
  • 举报
回复
帮顶~
deknight 2009-10-16
  • 打赏
  • 举报
回复
ding
wuyi8808 2009-10-16
  • 打赏
  • 举报
回复
mark
足球中国 2009-10-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 libinguest 的回复:]
支持一下!
[/Quote]ok,ok
xongbaming 2009-10-16
  • 打赏
  • 举报
回复
支持
zhangyanyang 2009-10-15
  • 打赏
  • 举报
回复
不错
hujia0815 2009-10-15
  • 打赏
  • 举报
回复
jf 顶下
yuanhuiqiao 2009-10-15
  • 打赏
  • 举报
回复
已阅
特别 2009-10-15
  • 打赏
  • 举报
回复
建议DOT NET再搞一个基础区
helloDongXiu 2009-10-15
  • 打赏
  • 举报
回复
谢谢分享,顶...
gonghuaqiao 2009-10-15
  • 打赏
  • 举报
回复
不过如此而已
ximengchang 2009-10-15
  • 打赏
  • 举报
回复
jf
24K純帥 2009-10-15
  • 打赏
  • 举报
回复
好贴,顶。。
加载更多回复(16)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧