要解决sql异常,无法找到任何列";partinfo“;或用户定义的函数或聚合;partinfo.query“;,或者名称不明确
我使用此pgm从名为partinfo的xmlstring格式的列中获取值。该列是表test中的一列。partinfo列可以被视为包含许多列的另一个表。我希望从本例中安装日期为的该列中读取数据。但在执行时,我获取一个 sql异常:找不到“partinfo”列或用户定义的 函数或聚合“partinfo.query”,或名称不明确。如何 我能解决这个问题吗要解决sql异常,无法找到任何列";partinfo“;或用户定义的函数或聚合;partinfo.query“;,或者名称不明确,sql,sql-server,for-xml,Sql,Sql Server,For Xml,我使用此pgm从名为partinfo的xmlstring格式的列中获取值。该列是表test中的一列。partinfo列可以被视为包含许多列的另一个表。我希望从本例中安装日期为的该列中读取数据。但在执行时,我获取一个 sql异常:找不到“partinfo”列或用户定义的 函数或聚合“partinfo.query”,或名称不明确。如何 我能解决这个问题吗 命名空间WpfApplication1 { /// ///MainWindow.xaml的交互逻辑 /// 公共部分类主窗口:窗口 { 公共主
命名空间WpfApplication1
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
试一试{
SqlConnection con=new
SqlConnection(“数据源=NIP007\\SQLEXPRESS;
初始目录=测试;用户ID=sa;密码=nest123@!);
con.Open();
string query=“从[test]”中选择[partinfo].query('.//InstalledDate').value('.','VARCHAR(MAX)');
SqlCommand cmd=新的SqlCommand(查询,con);
//StringBuilder=新的StringBuilder();
//string PartInfo=string.Empty;
SqlDataReader dr=cmd.ExecuteReader();
while(dr.Read())
{
字符串str5=dr.ToString();
如果(!string.IsNullOrEmpty(str5))
{
textBox1.Text=str5;
}
}
}
捕获(例外情况除外)
{
}
}
}
}
不清楚错误的确切位置,因为您的SQL应该正常工作(),并且不返回错误,尽管我不确定输出是否是您想要的,因为它只是将XML中的所有安装日期连接为一个长字符串:
正如我在前面的回答中所说的,如果您每行有多个安装日期,您将希望使用交叉应用将安装日期作为单独的行来获取
如果您确实希望将日期连接到一个字符串,那么我建议使用字符串生成器来执行此操作:
try
{
string query = @"SELECT InstalledDate = x.value('InstalledDate[1]', 'DATETIME')
FROM dbo.Test
CROSS APPLY PartInfo.nodes('/DocumentElement/PartInfo') p (x);";
using (var con = new SqlConnection("Data Source=NIP007\\SQLEXPRESS;Initial Catalog=test;User ID=sa;Password=nest123@!"))
using (var cmd = new SqlCommand(query, con))
{
con.Open();
using (var dr = cmd.ExecuteReader())
{
var builder = new StringBuilder();
while (dr.Read())
{
string str5 = dr.GetString(0);
if (!string.IsNullOrEmpty(str5))
{
builder.Append(str5 + ",");
}
}
textBox1.Text = builder.ToString();
}
}
}
catch (Exception ex)
{
}
如果这没有帮助,您可以发布表测试的DDL和一些示例数据
谢谢测试中XML列的名称是什么?我猜这不是PartInfo。另外,我猜这是您上一个问题的后续问题。您的XML中每个DocumentElement是否可能有多个PartInfo?它是PartInfo.ya。它与该问题相关。是的,XML中每个DocumentElement可能有多个PartInfo。但我无法识别这是什么原因例外。请告诉我一个解决办法。
try
{
string query = @"SELECT InstalledDate = x.value('InstalledDate[1]', 'DATETIME')
FROM dbo.Test
CROSS APPLY PartInfo.nodes('/DocumentElement/PartInfo') p (x);";
using (var con = new SqlConnection("Data Source=NIP007\\SQLEXPRESS;Initial Catalog=test;User ID=sa;Password=nest123@!"))
using (var cmd = new SqlCommand(query, con))
{
con.Open();
using (var dr = cmd.ExecuteReader())
{
var builder = new StringBuilder();
while (dr.Read())
{
string str5 = dr.GetString(0);
if (!string.IsNullOrEmpty(str5))
{
builder.Append(str5 + ",");
}
}
textBox1.Text = builder.ToString();
}
}
}
catch (Exception ex)
{
}