SqlDataReader一些用法
DataTable tb=reader.GetSchemaTable ();
foreach (DataRow dtrow in tb.Rows ){
foreach(DataColumn dtcol in tb.Columns ){
Console.Write ("\t"+ dtcol.ColumnName+"="+dtrow[dtcol] );
}
Console.Write ("\n");
}
注意,该方法返回的并不是我们操作的数据表,而是一个描述列的元数据的一个结构表,类似下面的:
| 列名称 | 列序号 | 列长度 | 列类型(...) | |
| 第一列 | ||||
| 第二列 |
就是说返回的 table对象的 ROws属性 是我们操作表的所有列的集合,而COLUMNS属性是所有列特征的集合
DataTable
枚举DataTable
通过Foreach循环遍历DataTable的行和列
System.Text.StringBuilder buffer=new System.Text.StringBuiler();
foreach(DataColumn dc in auto.Colmns)
{
buffer.Append(String.Format(“{0,15}”,dc.ColumnName));
}
buffer.Append("\r\t");
foreach(DataRow dr in auto.Rows)
{
foreach(DataColumn dc in auto.Colmns)
{
buffer.Append(String.Format("{0,15}",dr[dc]));
}
buffer.Append("\r\t");
}
textbox1.Text=buffer.ToString();
三. 使用DataView
1. Sort排序
DataView view=new DataView(auto);
view.Sort="Make ASC,Year DESC";
不过我很少使用DataView 的排序功能,我的作法是在SQL语句中使用Order by
2. 使用RowFilter 精确查找
DataView view=new DataView(auto);
view.RowFilter="Make like 'AA%' and Year>2001";
同样也可以在SQL语句中设置查询条件,看个人的习惯和实际的需要了。
3 将DataView 导出到一个新表
DataTable new_Table=view.ToTable("MyTable",true,"id","name");
MyTable 新表的名称,true 表示显示不同的值,将相同的行删除(相当于Sql 的distinct),
id 和name 为新表的列ID.
4. 枚举DataView
和枚举DataTabe大同小异
System.Text.StringBuilder buffer=new System.Text.StringBuiler();
foreach(DataColumn dc in auto.Colmns)
{
buffer.Append(String.Format(“{0,15}”,dc.ColumnName));
}
buffer.Append("\r\t");
foreach(DataRowView dv in view)
{
foreach(DataColumn dc in auto.Colmns)
{
buffer.Append(String.Format("{0,15}",dv[dc]));
}
buffer.Append("\r\t");
}

浙公网安备 33010602011771号