我们先来介绍一下SqlDataAdapter
,它是一个在C#中用于填充DataSet和DataTable的重要类。SqlDataAdapter
提供了以下核心方法:
Fill(DataSet)
:将数据填充到DataSet中。Fill(DataTable)
:将数据填充到DataTable中。Fill(int, int, DataTable[])
:将一组数据填充到一组DataTable中。
那么,Fill()
方法具体是怎样实现的呢?
实际上,Fill()
方法主要是通过SqlCommand
的ExecuteReader()
方法获取SqlDataReader
,然后通过SqlDataReader
的GetSchemaTable()
方法获取数据结构信息,进而通过反射机制利用DataRow
的SetField()
方法将数据填充到DataSet或DataTable中。
下面来看两个示例说明。
示例一:从数据库中获取学生信息
考虑以下的MySQL表格students
:
id | name | age |
---|---|---|
1 | Alice | 20 |
2 | Bob | 18 |
3 | Charles | 19 |
我们首先需要定义一个SqlConnection
对象,然后定义一个SqlDataAdapter
对象,设置它的SelectCommand
属性,并新建一个空的DataSet
对象。接着,调用SqlDataAdapter
的Fill()
方法即可将数据填充到DataSet
中:
using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
static void Main(string[] args)
{
string connectionString = "<your connection string here>";
SqlConnection connection = new SqlConnection(connectionString);
SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM students", connection);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
DataTable table = dataSet.Tables[0];
foreach (DataRow row in table.Rows)
{
Console.WriteLine(row["id"].ToString() + " - " + row["name"].ToString() + " - " + row["age"].ToString());
}
connection.Close();
}
}
输出结果如下:
1 - Alice - 20
2 - Bob - 18
3 - Charles - 19
示例二:从XML文件中读取数据
考虑以下的XML文件books.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1">
<title>The Catcher in the Rye</title>
<author>J.D. Salinger</author>
<price>10.99</price>
</book>
<book id="2">
<title>To Kill a Mockingbird</title>
<author>Harper Lee</author>
<price>12.99</price>
</book>
<book id="3">
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<price>9.99</price>
</book>
</books>
我们可以利用DataSet
和XmlTextReader
对象从XML文件中读取数据。先定义一个DataSet
对象,然后将XML文件读入到XmlTextReader
中,接着建立一个DataTable
对象并将其填充到DataSet
中即可。
using System;
using System.Data;
using System.Xml;
class Program
{
static void Main(string[] args)
{
DataSet dataSet = new DataSet();
XmlTextReader reader = new XmlTextReader("books.xml");
dataSet.ReadXml(reader);
DataTable table = dataSet.Tables["book"];
foreach (DataRow row in table.Rows)
{
Console.WriteLine(row["id"].ToString() + " - " + row["title"].ToString() + " - " + row["author"].ToString() + " - " + row["price"].ToString());
}
}
}
输出结果如下:
1 - The Catcher in the Rye - J.D. Salinger - 10.99
2 - To Kill a Mockingbird - Harper Lee - 12.99
3 - The Great Gatsby - F. Scott Fitzgerald - 9.99
以上就是SqlDataAdapter
中的Fill()
方法是如何实现的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# SqlDataAdapter中的Fill是怎么实现的 - Python技术站