C#从数据集中检索数据

本文关键字:数据 检索 集中 数据集 | 更新日期: 2023-09-27 18:21:41

我从一个简单的DataTable开始,在其中我写入了一个XML文件。下次运行程序时,我想检查XML文件是否退出,并读取它

编写xml似乎很好,我相信读取它也很好,但在读取数据集之后,我似乎无法获得数据集中的任何数据。

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>        
      

我只是想得到;名称";每一行的字段,我做错了什么?

C#从数据集中检索数据

我将您的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()为Tesy1ds.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", "", "", "");