DataTable 添加列、设置主键、添加行、查询、


 

DataTable 添加列、设置主键、添加行、查询

对于数据库的操作,资料太多,大家也比较熟悉。
但有时数据量较少,但更新频繁的变量操作,通常采用自定义结构,但自定义结构的可维护性和灵活性就比不上临时表,我们可以先用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 ");


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM