我想在ASP.NET Web API專案中使用本機查詢,以防止 SQL 注入攻擊。對于此幾何查詢,我必須使用 MySQL 函式ST_Contains,但似乎無法使用以下方法正確系結引數。MySqlException: Invalid GIS data provided to function st_geometryfromtext.
List<Flight> result = await _context.Flight
.FromSqlRaw("SELECT * FROM flight WHERE ST_Contains(GeomFromText("
"'POLYGON(({0} {1}, {2} {3}, {4} {5}, {6} {7}, {8} {9}))')"
", POINT(StartLongitude, StartLatitude))", long1, lat1, long2, lat2, long3, lat3, long4, lat4, long1, lat1)
.ToListAsync();
有任何想法嗎?
uj5u.com熱心網友回復:
您可以在 MySQL 中連接它
List<Flight> result = await _context.Flight
.FromSqlRaw(@"
SELECT *
FROM flight
WHERE ST_Contains(GeomFromText(
CONCAT(
'POLYGON((',
{0},' ',{1},', ',
{2},' ',{3},', ',
{4},' ',{5},', ',
{6},' ',{7},', ',
{8},' ',{9},'))'
), POINT(StartLongitude, StartLatitude))
"
, long1, lat1, long2, lat2, long3, lat3, long4, lat4, long1, lat1)
.ToListAsync();
或者在 C# 中連接或格式化它
List<Flight> result = await _context.Flight
.FromSqlRaw(@"
SELECT *
FROM flight
WHERE ST_Contains(GeomFromText({0}, POINT(StartLongitude, StartLatitude))
",
$@"POLYGON(({long1} {lat1}, {long2} {lat2}, {long3} {lat3}, {long4} {lat4}, {long1} {lat1}))"
)
long1, lat1, long2, lat2, long3, lat3, long4, lat4, long1, lat1)
.ToListAsync();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/496133.html
上一篇:如何從物件中獲取屬性和值的名稱并將此名稱和值傳遞給c#中的串列
下一篇:MakeGenericMethodthrowsVerificationException:MethodMyClass.Calculate:typeargumentCityList'違反了型別
