【发布时间】:2017-05-30 09:23:08
【问题描述】:
我正在通过 C# 执行 sql 查询以获取 XML 数据,如下所示,但是在字符串 getxml_string 中,与 SQL 服务器上的数据相比,XML 数据不完整,我觉得我做错了什么getxml_string,但想不通:
string getxml = "some query"
DataTable getxml_table = SQLClass.GETSQL(getxml , conn);
var doc = new XmlDocument();
string getxml_string = getxml_table.Rows.OfType<DataRow>().Select(x => x[0].ToString()).First();
doc.LoadXml(getxml_string);
在 GETSQL 中没有什么花哨的,如下所示:
public static DataTable GETSQL(string sqller, SqlConnection connection)
{
DataTable data_table = new DataTable();
connection.Open();
using (SqlCommand command = new SqlCommand(sqller, connection))
{
SqlDataAdapter adapter = new SqlDataAdapter(command );
adapter.Fill(data_table);
connection.Close();
return data_table ;
}
}
【问题讨论】:
-
与您当前的问题无关,但
GETSQL对于方法来说是一个非常糟糕的主意。您基本上一次强制 SQL 接口基于单个字符串,这使得使用参数变得不可能。这很糟糕,因为“使用参数”是你应该养成的习惯以避免SQL Injection。 -
好的,我发现了问题。我的问题当然是我的
getxml_string,正如我从数据集可视化器中看到的那样。在这里,我正在执行 .FIRST(),所以它只是获取第一行。我如何得到所有的行。 -
您可能无法获取所有数据。增加超时。 command.CommandTimeout = 300; //以秒为单位,默认为 30
-
@jdweng,我可以在数据表 (
getxml_table) 中看到它已获取所有数据。但是现在问题是读取数据表。我在getxml_string中使用.first。所以可能是因为这个。我无法读取数据表。 -
需要查看部分 xml 以确定修复。解析xml的方法很多,在这种情况下不知道合适的方法。
标签: c# sql sql-server xml