SQL Server DataReader.GetField возвратил ноль вместо данных географии - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть база данных Microsoft SQL Server 2008 (SP3). Мне удалось записать некоторые геопространственные данные в таблицу, используя тип данных Geography.

Я сейчас пытаюсь прочитать данные из базы данных, но получаю сообщение об ошибке:

DataReader.GetField (2) вернул ноль

В столбце данных, конечно, есть информация.

Код ниже прост. Я использую .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;
    }
}

1 Ответ

0 голосов
/ 02 апреля 2019

Мне нужно было решить две вещи:

Сначала загрузите Microsoft.SqlServer.Types из диспетчера NuGet.

Затем мне нужно было вручную добавить зависимость в файл 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>
...