SQL Server DataReader.GetField 返回 null 而不是地理数据
Posted
技术标签:
【中文标题】SQL Server DataReader.GetField 返回 null 而不是地理数据【英文标题】:SQL Server DataReader.GetField returned null instead of geography data 【发布时间】:2019-08-23 07:07:12 【问题描述】:我有一个 Microsoft SQL Server 2008 (SP3) 数据库。我能够使用 Geography 数据类型将一些地理空间数据写入表中。
我现在正在尝试从数据库中读取数据,但出现错误:
DataReader.GetField(2) 返回 null
数据栏中当然有信息。
下面的代码很简单。我正在使用 .NET Framework 4.7。有什么明显的事情我没有处理吗?
string sql = @"
SELECT *
FROM Locations
WHERE LocID= " + tableOutput.OID.ToString();
System.Data.DataSet ds = Database.RequestData(sql);
static public System.Data.DataSet RequestData(string sql)
System.Data.DataSet ds = null;
try
using (SqlConnection conn = new SqlConnection(connectionString))
conn.Open();
using (SqlDataAdapter importer = new SqlDataAdapter(sql, conn))
ds = new System.Data.DataSet();
importer.Fill(ds, "Data");
return ds;
catch (Exception e)
Logger.Write(e.Message);
return ds;
【问题讨论】:
你可能需要nuget.org/packages/Microsoft.SqlServer.Types @IanKemp 感谢您的想法,我确实从 MS 论坛中找到了这些说明。我曾希望这会得到修复,但它仍然返回相同的错误。 【参考方案1】:我需要做两件事来解决这个问题:
首先从 NuGet 管理器下载 Microsoft.SqlServer.Types。
然后我需要手动将依赖添加到项目根目录下的 App.config 中
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
【讨论】:
以上是关于SQL Server DataReader.GetField 返回 null 而不是地理数据的主要内容,如果未能解决你的问题,请参考以下文章
ms sql2012 能否安装在win2008 server
Sql server2008! SQL server服务无法启动,并显示错误17113, 修复Sql server2008失败!
已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具