通过以下代码寻求帮助-我试图找出我实际上想用来移动到SQL表的XML文件中的编码位置。我只是不确定如何从我的文件系统中指定它...
using System;
using System.Data.SqlClient;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using (var con = new SqlConnection("Server=(local);Database=TempDb;Integrated Security=true"))
{
con.Open();
var cmdCreateTable = new SqlCommand("if object_id('dbo.t') is null create table t(id int identity primary key, doc xml);",con);
cmdCreateTable.ExecuteNonQuery();
var cmdInsertXml = new SqlCommand("insert into t(doc) values (@doc);", con);
var pDoc = cmdInsertXml.Parameters.Add("@doc", System.Data.SqlDbType.Xml);
var doc = XDocument.Parse("<root><cn/><cn/><cn/></root>");
pDoc.Value = doc.CreateReader();
cmdInsertXml.ExecuteNonQuery();
var cmdRetrieveXml = new SqlCommand("select id, doc from t",con);
using (var rdr = cmdRetrieveXml.ExecuteReader())
{
while (rdr.Read())
{
var xr = rdr.GetSqlXml(1);
var rd = XDocument.Parse(xr.Value);
Console.WriteLine(rd.ToString());
}
}
}
}
}
}
答案 0 :(得分:1)
我不确定我是否正确,但是如果您想尝试的话,我找到了。
尝试从DataTable
读取xml
DataTable table;
private void createDatatableFromXML()
{
table = new DataTable();
string dataFile = @"DatafileLocation\datafile.xml";
if (File.Exists(dataFile))
{
table.ReadXml(dataFile);
}
else
{
//Do som messaging
return;
}
}
之后,尝试从DataTable
创建SQL表,请参见此link。
答案 1 :(得分:1)
从上面提到的代码中删除我会说下面的行需要更新 var doc = XDocument.Parse(“”);
我会说类似 var doc = XDocument.Parse(File.ReadAllText(filePath));
这仅在文件格式正确时起作用。