2010-07-19 28 views
0

我得到错误“表没有主键”。那么如何设置主键,当我调用ReadXml()或者错过了一个参数时,它不会执行此操作?数据集错误“表没有主键”。当使用XmlRead()

MemoryStream msXml = new MemoryStream(byteArray);
DataSet dsXml = new DataSet();
dsXml.ReadXml(msXml);
string s = "123456789";
DataRow foundRow = dsXml.Tables["Accounts"].Rows.Find(s);

EDITED

这里是我的XML文件格式的基本example。我将如何为每张CD设置主键?

感谢

+1

嘿,只是一个快速的建议..尝试设置MissingSchemaAction属性为“AddWithKey”在你的数据集,看看是否可行? – Marko 2010-07-19 23:17:10

+0

XML文件是否必须有ID或数据集会为我做这个? – arbme 2010-07-19 23:27:02

+0

我相信XML文件需要有ID(唯一),这将是该表的PK。 – Marko 2010-07-19 23:28:32

回答

2

非常感谢您的帮助,我设法将它弄出来。下面的例子对我有帮助,如果它可以帮助其他人。

DataSet dsXml = new DataSet();
dsXml.ReadXml(msXml);
DataTable tbl;
tbl = dsXml.Tables["Accounts"];
tbl.PrimaryKey = new DataColumn[] { tbl.Columns["Id"] };

0

您正在阅读的XML数据到数据集,但是架构,这是其中的PK将被定义。

当您使用Find方法需要未定义的Pk时,会引发该错误。

既可以在加载数据后手动定义,也可以保存/加载xml和schema。