[英]C# retrieving data from DataSet
我从一个简单的DataTable开始,其中已经写入了XML文件。 在下一次运行该程序时,我想检查XML文件是否退出并阅读。
似乎写xml很好,而且我相信阅读它也很好,但是从中读取后似乎无法在DataSet中获取任何数据。
ds.WriteXml(@"C:\Computers\config.xml");
if (File.Exists(@"C:\Computers\config.xml"))
{
ds.ReadXml(@"C:\Computers\config.xml");
//comboBox.Items.Add(ds.Tables[0].Rows[0][0].ToString()); doesn't work
comboBox.Items.Add(ds.Tables[0].Rows.Count); //this counts 3 rows
}
我收到此错误。
System.Data.dll中发生了类型为'System.IndexOutOfRangeException'的未处理异常
附加信息:找不到列1。
这是我的XML文件
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table1>
<Name>Test1</Name>
<Version>1.1.1.1</Version>
<Code />
<Location>C:\Computers\test.txt</Location>
</Table1>
<Table1>
<Name>test2</Name>
<Version />
<Code />
<Location />
</Table1>
<Table1>
<Name>test3</Name>
<Version />
<Code />
<Location />
</Table1>
</NewDataSet>
我只是想从每一行中获取“名称”字段,我在做什么错?
我将您的XML放入C:\\ computer并运行代码
DataSet ds =new DataSet();
if (File.Exists(@"C:\Computers\config.xml"))
{
ds.ReadXml(@"C:\Computers\config.xml");
//comboBox.Items.Add(ds.Tables[0].Rows[0][0].ToString()); doesn't work
comboBox.Items.Add(ds.Tables[0].Rows.Count); //this counts 3 rows
}
comboBox.Items.Add(ds.Tables [0] .Rows [0] [0] .ToString()是Tesy1 ds.Tables [0] .Rows.Count是3
所以,我认为问题不在这里。
问题是当你写
ds.WriteXml(@"C:\Computers\config.xml");
在第一行中,它将写入一个新文件,因此当您读取文件时,其中没有数据。 所以现在您应该删除第一行,然后检查它是否可以正常运行
if (File.Exists(@"C:\Computers\config.xml"))
{
ds.ReadXml(@"C:\Computers\config.xml");
comboBox.Items.Add(ds.Tables[0].Rows[0][0].ToString()); //doesn't work
comboBox.Items.Add(ds.Tables[0].Rows.Count); //this counts 3 rows
}
数据表结构可能不正确吗?
public DataTable predefinedPatch = new DataTable();
predefinedPatch.Columns.Add("Name");
predefinedPatch.Columns.Add("Version");
predefinedPatch.Columns.Add("Code");
predefinedPatch.Columns.Add("Location");
//
predefinedPatch.Rows.Add("test1", "", "", "");
predefinedPatch.Rows.Add("test2", "", "", "");
predefinedPatch.Rows.Add("test3", "", "", "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.