現在我們以字串的形式獲取幾何資料,我們需要將它作為幾何型別保存到我們的 SQL 資料庫中。
目前,我正在嘗試做一些看起來像這樣的事情
String shape = "POLYGON((0 0, 150 0, 150 150, 0 150, 0 0))" ;
String insertSQL = "INSERT INTO x (shape) values (@shape)";
SqlCommand cmd = new SqlCommand(insertSql, sqlConnection);
cmd.CommandType = System.Data.Text;
cmd.Parameters.AddWithValue("@shape", "geometry::Parse(" shape ")");
cmd.ExecuteNonQuery();
每次執行查詢時,我都會收到錯誤訊息:
{“在執行用戶定義的例程或聚合“幾何”期間發生 .NET Framework 錯誤:
System.FormatException: 24114: The label geometry::Parse('POL in the input well-known text (WKT) is not valid. 有效標簽為 POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION、CIRCULARSTRING、COMPOUNDC CURVEPOLYGON 和 FULLGLOBE(僅限地理資料型別)。
System.FormatException:
在 Microsoft.SqlServer.Types.OpenGisTypes.ParseLabel(String input) 在 Microsoft.SqlServer.Types.WellKnownTextReader.ParseTaggedText(OpenGisType type) 在 Microsoft.SqlServer.Types.WellKnownTextReader.Read(OpenGisType type, Int32 srid) 在 Microsoft.SqlServer。 Types.SqlGeometry.GeometryFromText(OpenGisType 型別,SqlChars 文本,Int32 srid) 在 Microsoft.SqlServer.Types.SqlGeometry.Parse(SqlString s)。
該陳述句已終止。”}
有沒有辦法在不匯入 SQL SERVER Types 包的情況下本地完成此操作?或者是實作這一目標的唯一方法是包含 Nuget 包并從那里開始?
uj5u.com熱心網友回復:
SQL 查詢中的引數用于防止 SQL 注入 - 這意味著您在查詢引數中包含的任何內容都不會被視為資料以外的任何內容,不會被評估,因此geometry::Parse不會運行。嘗試這樣的事情:
String shape = "POLYGON((0 0, 150 0, 150 150, 0 150, 0 0))" ;
String insertSQL = "INSERT INTO x (shape) values (geometry::Parse(@shape))";
SqlCommand cmd = new SqlCommand(insertSql, sqlConnection);
cmd.CommandType = System.Data.Text;
cmd.Parameters.AddWithValue("@shape", shape);
cmd.ExecuteNonQuery();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/337222.html
標籤:C# sql sql-server 几何学
上一篇:運算子&&不能應用于“int”和“bool”型別的運算元
下一篇:字串串列中的最小唯一子序列
