public string ExecuteSqlDataReaderSelect(string CustomerID,
string ConnectionString)
{
SqlDataReader myDataReader = null;
// 创建一个数据库连接对象
SqlConnection mySqlConnection = new SqlConnection
(ConnectionString);
// 创建一个数据库命令对象,并在SQL语句中运用FOR XML子句
SqlCommand mySqlCommand = new SqlCommand("SELECT * FROM Customers
WHERE CustomerID = @CustomerID FOR XML RAW", mySqlConnection);
mySqlCommand.CommandType = CommandType.Text;
// 为其参数集添加参数
mySqlCommand.Parameters.Add("@CustomerID", SqlDbType.Char, 5,
"CustomerID");
mySqlCommand.Parameters["@CustomerID"].Value = CustomerID;
mySqlConnection.Open();
// 执行数据库命令对象的ExecuteReader操作以取得一个数据阅读器对象
myDataReader = mySqlCommand.ExecuteReader(CommandBehavior.
CloseConnection);
// 创建一个StringBuilder对象以构造XML字符串
StringBuilder XML = new StringBuilder(8192);
// 不断从数据阅读器中获取XML数据并添加到StringBuilder对象中
while (myDataReader.Read())
{
if (!myDataReader.IsDBNull(0))
XML.Append(myDataReader.GetString(0));
}
myDataReader.Close();
mySqlConnection.Close();
// 返回XML数据的字符串形式
return XML.ToString();
}
SqlDataReader类为我们提供了一种只读的、向前的数据访问方式,该特性使得它成为访问SQL Server数据库速度最快的一种方法。然而SqlDataReader类并不直接支持XML类型的数据,你必须手动编写代码将数据转换成XML数据或者通过运行FOR XML查询子句来返回XML类型的数据。这里,我们将使用FOR XML RAW子句来获取XML数据。
上面的ExecuteSqlDataReaderSelect()方法首先声明一个SqlDataReader对象,然后通过函数的数据库连接字符串参数创建一个SqlConnection对象,并根据带有FOR XML RAW子句的SELECT语句和上面的SqlConnection对象创建一个SqlCommand对象。之后,该方法为SqlCommand的参数集添加参数并为用户ID参数赋值。打开SqlConnection连接后,该方法将SqlCommand对象的ExecuteReader()方法的返回值赋给SqlDataReader对象,并通过一个StringBuilder对象读取SqlDataReader对象中的XML数据。最后,该方法关闭SqlDataReader对象和SqlConnection对象并以字符串的形式返回XML数据。
最后,为该类添加ExecuteSqlXMLSelect()方法,该方法如下:
public string ExecuteSqlXMLSelect(string CustomerID, string
ConnectionString, bool ClientSide)
{
// 创建一个SqlXMLCommand对象
SqlXMLCommand cmd = new SqlXMLCommand(ConnectionString);
cmd.RootTag = "Customers";
cmd.ClientSideXML = ClientSide;
cmd.CommandText = "SELECT * FROM Customers WHERE CustomerID =
'" + CustomerID + "' FOR XML RAW";
// 执行SqlXMLCommand对象的ExecuteXMLReader操作以取得一个XMLReader对象
XMLReader xr = cmd.ExecuteXMLReader();
// 创建一个XMLDocument对象
XMLDocument xd = new XMLDocument();
// 运用其Load方法将获取的XML数据载入到一个DOM中并返回XML数据的字符串形式
xd.Load(xr);
return xd.OuterXML
}
SQLXML托管类是SQLXML 3.0包的一部分,SQLXML 3.0包扩展了SQL Server 2000的XML功能。SQLXML托管类是原生的.NET类,它提供了通过编程方法访问XML数据的功能。上面的ExecuteSqlXMLSelect()方法首先运用数据库连接字符串创建一个SqlXMLCommand对象。同时,由FOR XML子句获取的XML数据往往只是一个XML片段,并不是结构良好(Well-Formed)的XML数据,要使得XML成为结构良好的,你必须设定SqlXMLCommand对象的RootTag属性。在本实例中,我们将该属性设置为"Customers"。
以前版本的SQLXML
copyright 2004-2009 www.qqcf.com all rights reserved. DIV+CSS架构 本站为学习性免费网站,没有任何商业性质,甚至连一个外部广告都没有投放 所有文章均来源于互联网,如发现有侵权,请来信告知,本站将会以最快的速度删除和改正,E-Mail:cftop@qq.com