0

我已经使用 XSLT 成功地将 KML 文件转换为 GML 文件,现在我需要将 GML 数据保存到我的 SQL 数据库中的几何列中。不知道在这段代码后面放什么:

var doc = new XmlDocument();
var fileName = Path.GetFileName(Polygon.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
Polygon.SaveAs(path);
doc.Load(path);
var result = new XmlActionResult();
result.Document = doc;
result.TransformSource = Server.MapPath("~/App_Data/XSL/kml2gml.xsl");
return result;

如果可以的话请帮忙。

4

1 回答 1

0

一旦你有了 xml,你就可以像任何其他插入一样将它写入数据库。SQL Server 具有 xml 数据类型。使用它将您的 xml 存储在单个列中,这是最好的。但是,如果您需要分解层次结构并将其存储在不同的表中,那也很简单。

    static void Main(string[] args)
    {
        var doc = new XmlDocument();
        var fileName = @"C:\test.xml";
        doc.Load(fileName);
        var connection = new SqlConnection(@"Data Source=MyServer; 
             Initial Catalog=MyDatabase; Integrated Security=SSPI");
        connection.Open();
        var command = new SqlCommand(
             "INSERT INTO dbo.Shapes (shape, desc) VALUES (@a, @b)", connection);
        command.CommandType = CommandType.Text;
        command.Parameters.Add("@a", SqlDbType.Xml);
        command.Parameters["@a"].Value = doc.OuterXml;
        command.Parameters.Add("@b", SqlDbType.VarChar);
        command.Parameters["@b"].Value = doc.InnerXml;
        command.ExecuteNonQuery();
        connection.Close();
    }
于 2012-05-30T19:58:32.370 回答