C#中如何使用DataSet和DataTable接收从数据库传过来的值 详细代码 谢谢 (初学者)

如题所述

/// <summary>
/// SQL Server 的数据库连接字符串.
/// </summary>
private const String connString =
@"Data Source=localhost\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True";

/// <summary>
/// 用于查询的 SQL 语句.
/// </summary>
private const String SQL =
@"
SELECT
TOP 3
ROW_NUMBER() OVER (ORDER BY SUM(SALE_MONEY) DESC) AS NO,
SALE_DATE,
SUM(SALE_MONEY) AS SUM_MONEY
FROM
SALE_REPORT
GROUP BY
SALE_DATE
ORDER BY
SUM(SALE_MONEY) DESC";

/// <summary>
/// 将数据读取到 DataSet 中.
///
/// 这里演示了2种方式,一种是从数据库中读取,一种是从XML文件中读取.
/// </summary>
public void ReadDataToDataSet()
{

Console.WriteLine("使用DataAdapter,将数据填充到DataSet中,然后脱离数据库,直接对DataSet进行处理。");
// 建立数据库连接.
SqlConnection conn = new SqlConnection(connString);
// 创建一个适配器
SqlDataAdapter adapter = new SqlDataAdapter(SQL, conn);
// 创建DataSet,用于存储数据.
DataSet testDataSet = new DataSet();
// 执行查询,并将数据导入DataSet.
adapter.Fill(testDataSet, "result_data");
// 关闭数据库连接.
conn.Close();

// 处理DataSet中的每一行数据.
foreach (DataRow testRow in testDataSet.Tables["result_data"].Rows)
{
// 将检索出来的数据,输出到屏幕上.
Console.WriteLine("NO:{0} ; Date:{1} ; Money:{2} ",
testRow["NO"], testRow["SALE_DATE"], testRow["SUM_MONEY"]
);
}

// 注意:
// 在通过 DataTable 的 WriteXml 方法来导出数据,给其他系统使用的时候
// 还需要使用 WriteXmlSchema 来导出 Schema
// 否则在使用 ReadXml 读取的时候, 会发生错误,因为新的 DataTable 不知道表的结构,不知道该如何去读取.
// 除非你手动设置好每个列的字段/数据类型等信息,那么 DataSet 或者 DataTable 将能够理解如何倒入,而不在需要 ReadXmlSchema
Console.WriteLine("将 DataTable 的数据,写入到 XML 文件中。");
testDataSet.Tables["result_data"].WriteXmlSchema(DATATABLE_SCHEMA_XML_FILE);
testDataSet.Tables["result_data"].WriteXml(DATATABLE_XML_FILE);

Console.WriteLine("从 XML 文件中,读取数据到 DataTable 里面。");
DataTable newDt = new DataTable();
newDt.ReadXmlSchema(DATATABLE_SCHEMA_XML_FILE);
newDt.ReadXml(DATATABLE_XML_FILE);

// 处理DataSet中的每一行数据.
foreach (DataRow testRow in newDt.Rows)
{
// 将检索出来的数据,输出到屏幕上.
Console.WriteLine("NO:{0} ; Date:{1} ; Money:{2} ",
testRow["NO"], testRow["SALE_DATE"], testRow["SUM_MONEY"]
);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-20
你可以把DataTable和DataSet看做是数据容器,比如你查询数据库后得到一些结果,可以放到这种容器里,那你可能要问:我不用这种容器,自己读到变量或数组里也一样可以存起来啊,为什么用容器?

原因是,这种容器的功能比较强大,除了可以存数据,还可以有更大用途。举例:在一个c/s结构的桌面数据库系统里,你可以把前面存放查询结果的容器里的数据显示到你客户端界面上,用户在界面上对数据进行添加、删除、修改,你可以把用户的操作更新到容器,等用户操作完毕了,要求更新,然后你才把容器整个的数据变化更新到中心数据库,这样做的好处是什么?就是减少了数据库操作,客户端速度提高了,数据库压力减小了。

DataSet可以比作一个内存中的数据库,DataTable是一个内存中的数据表,DataSet里可以存储多个DataTable本回答被网友采纳

C#中我在一个dataset中放入了多个dataTable,现在要取出每个dataTable中...
根据索引 index 或者名称 tableName var ds = new System.Data.DataSet();ds.Tables.AddRange(new System.Data.DataTable[] { new System.Data.DataTable(), \/\/ index:=0 new System.Data.DataTable("table1"), \/\/ index:=1, name:=table1 new System.Data.DataTable("table2", "myns1...

C#DataSet与DataTable的区别和用法
DataSet可以比作一个内存中的数据库,DataTable是一个内存中的数据表,DataSet里可以存储多个DataTable c#自带的帮助就很好,多看多试就行,别让一楼那样的吓唬住,c#入门和学习都不难,小学五年级就可以学的。

c#中关于Dataset,datarow的数据访问问题
string x = row.ToString();这里调用的是DataRow.ToString,当然返回system.Data.DataRow,如果DataTable里只有一列,可以用string x = row[0].ToString();DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,...

C#关于DataSet,DataTable,DataRow 和DataColumn的区别和用法
(1)构造函数 DataTable() 不带参数初始化DataTable类的新实例。DataTable(string tableName) 用指定的表名初始化DataTable类的新实例。DataTable(string tableName, string tableNamespace) 用指定的表名和命名空间初始化DataTable类的新实例。(2) 常用属性 CaseSensitive 指示表中的字符串比较...

C#DataSet与DataTable的区别和用法
DataSet的数据是与数据库断开的。DataSet还可用于多层应用程序中,如果应用程序运行在中间层的业务对象中来访问数据库,则业务对象需将脱机数据结构传递给客户应用程序。DataSet的三种创建方式:DataTable() 不带参数初始化DataTable 类的新实例。DataTable(string tableName) 用指定的表名初始化DataTable...

在C#中怎样把数据库中的数据添加到DataTable中
\/\/ 从数据库中查询数据,返回DataTable DataTable Query(OleDbConnection conn, string sql){ OleDbDataAdapter adapter = new OleDbDataAdapter(sql, conn);DataSet ds = new DataSet();try { adapter.Fill(ds, "factors");} catch (Exception ex){ _log.Error("GetFactorsInfo() fail: ", ex);...

C#链接ACCESS数据库怎么用DataSet绑定数据,并通过displaymember添加到c...
找一个sqlhelper类 或者自己写ado.net 用sqladpter填充DataSet 取到第一个datatable dt= Dataset[0]然后遍历 foreach(System.Data.DataRow dr in dt.Rows){ displaymember=dr["id"] \/\/这里就是展示数据表中每行的id值 }

C#里的DataSet到底是干什么用的,怎么用?哪位高手帮我讲解讲解,谢谢啦...
DataTable dt1=new DataTable();DataSet ds=new DataSet();ds.Tables.Add(dt1);\/\/错误 ds.Tables.Add(dt1.Copy());\/\/正确 5.SqlDataAdapter可以填充DataSet也可以填充DataTable,根据实际需要,如sql查询的是返回多个记录集则用DataSet,单个记录集用DataSet和DataTable均可,只是通过dataSet1.Tables[...

在C#中页面上怎么循环读取DataSet中的每个值
dataset里面存放的是datatable ,datatable里面存放数据。知道这个特性以后就可以用最容易理解的循环步骤来获取dataset中每一个值:1 循环dataset中的 datatable;2 在上述循环里面循环每个datatable的rows;3 在rows循环里面循环columns,从而获取dataset中每一个值。

C# winform设计时使用的“Dataset”如何返回其中包括的数据数量,是用什...
DataSet 是DataTable的集合,你所指的数量是DataTable的数量的话,那就是 var ds=new DataSet();var count=ds.Tables.Count;如果你所指的是所以得DataTable里的DataRow的数量的话,就需要循环查询了 var count=0;foreach(var dataTable in ds.Tables){ count+=dataTable.Rows.Count;} ...

相似回答