gpt4 book ai didi

c# - 传入地理类型和 SQL 转换为地理类型?

转载 作者:行者123 更新时间:2023-11-30 17:53:35 25 4
gpt4 key购买 nike

我正在弄清楚如何获取地理数据(纬度/经度)并使用地理列将其添加到 SQL 数据库。我正在引用 Microsoft.SqlServer.Types 来获取 SqlGeographyBuilder

我还应该补充一点,这是在 SQL2008r2 上

我的 C# 项目也在使用 .Net 4.0

这只是我在 C# 代码中使用的一小段代码:

SqlParameter param21 = new SqlParameter();

param21.ParameterName = "@Shape";
param21.UdtTypeName = "Geography";
param21.SqlDbType = System.Data.SqlDbType.Udt;
param21.Size = 1;

SqlGeographyBuilder sqlGeogBuild = new SqlGeographyBuilder();
SqlGeography sqlGeog = null;

sqlGeogBuild.SetSrid(4267);

if (inputReader[parmLatColumnName].ToString().Length > 0 && inputReader[parmLonColumnName].ToString().Length > 0)
{
sqlGeogBuild.BeginGeography(OpenGisGeographyType.Point);
sqlGeogBuild.BeginFigure(float.Parse(inputReader[parmLatColumnName].ToString()), float.Parse(inputReader[parmLonColumnName].ToString()));
sqlGeogBuild.EndFigure();
sqlGeogBuild.EndGeography();
sqlGeog = sqlGeogBuild.ConstructedGeography;
param21.Value = sqlGeog;
}
else
{
param21.Value = DBNull.Value;
}

sqlComm.Parameters.Add(param21);

当我使用探查器时,我发现我的查询看起来像这样:

declare @p21 sys.geography
set @p21=convert(sys.geography,0xE6100000010C00000080B0374040000000806BD057C0)

exec insPoints @stCty=N'31256',@InstrumentType=N'''ogVal''',@FileDate='2008-01-03 00:00:00',@EntryNumber=N'''500''',@Vol=N'NULL',@Page=N'NULL',@Lessor=N'''name''',@Lessee=N'''company name''',@InstrumentDate='2000-01-12 00:00:00',@Term=3,@TermType=N'''Years''',@Expiration='2010-07-12 00:00:00',@Royalty=0.000100000,@GrossAcres=1.000000000,@AgencyId=N'NULL',@Agency=N'''Fee''',@EffDate=NULL,@Survey=N'''A500,A06,A700,A400,A900''',@Longitude=-91.000000000,@Latitude=30.000000000,@Shape=@p21

当我将其作为地理类型传递时,为什么它会将其转换为地理类型?

最佳答案

SQL Server 允许定义您自己的数据类型。这称为用户定义数据类型 (UDT)。

您正在使用用户定义类型来定义@Shape。由于您没有在数据库中定义单独的用户定义数据类型 Georgaphy,因此它将值转换为系统数据类型 geography。大小写不重要,重要的是

使用 SqlPArameter 类的不同属性 - DbType 而不是直接引用 db 数据类型可以解决这个问题。但是,SqlDbType enumerator 中没有geography 成员。 .

它看起来像是 .Net 和 SQL Server 之间的差距。尝试设置 DbType = "geography",但它不太可能起作用。

关于c# - 传入地理类型和 SQL 转换为地理类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com