繁体   English   中英

C#从数据集中检索数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM