将创建 xml 文件更改为:使用 xmlreader 加载到数据表
Posted
技术标签:
【中文标题】将创建 xml 文件更改为:使用 xmlreader 加载到数据表【英文标题】:Change create xml file to : Load to datatable, using xmlreader 【发布时间】:2019-12-11 09:53:26 【问题描述】:我正在使用 C# 在驱动器上创建 Xml file
,然后将此文件的内容写入表中。但是现在我想读取Xml string
并写入表,而不必创建文件然后将文件的内容写入表。
XmlDocument xdoc = new XmlDocument();
string fullFilePath = path + @"\Product.xml";
string Products;
Products = getProducts();
xdoc.LoadXml(Products);
xdoc.Save(String.Format(fullFilePath));
string connetionString = null;
SqlConnection connection;
SqlCommand command ;
SqlDataAdapter adpter = new SqlDataAdapter();
DataSet ds = new DataSet();
XmlReader xmlFile ;
string sql = null;
int product_ID = 0;
string Product_Name = null;
double product_Price = 0;
connetionString = "Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password";
connection = new SqlConnection(connetionString);
xmlFile = XmlReader.Create("Product.xml", new XmlReaderSettings());
ds.ReadXml(xmlFile);
int i = 0;
connection.Open();
for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
product_ID = Convert.ToInt32(ds.Tables[0].Rows[i].ItemArray[0]);
Product_Name = ds.Tables[0].Rows[i].ItemArray[1].ToString();
product_Price = Convert.ToDouble(ds.Tables[0].Rows[i].ItemArray[2]);
sql = "insert into Product values(" + product_ID + ",'" + Product_Name + "'," + product_Price + ")";
command = new SqlCommand(sql, connection);
adpter.InsertCommand = command;
adpter.InsertCommand.ExecuteNonQuery();
connection.Close();
无法读取 Xml string
内联以写入表中。
【问题讨论】:
我找不到您实际写入文件的位置。我看到您从内存中的数据库构建内容,但没有写操作。最少修改的方法通常是用内存流替换您用来保存文件的任何 FileStream。 为什么需要 XML?为什么不直接遍历Products
并将属性映射到数据库列?
@Christopher xdoc.Save(...)
【参考方案1】:
使用 XmlDocument.Save() 将其保存到内存流中,然后使用 DataSet.ReadXml() 从该内存流中读取它。
【讨论】:
以上是关于将创建 xml 文件更改为:使用 xmlreader 加载到数据表的主要内容,如果未能解决你的问题,请参考以下文章
将 Strings.xml 中的 String-Array 更改为 ArrayList