Ниже приведены некоторые вещи, которые необходимо исправить в вашем коде:
SqlCommand addpoint = new SqlCommand("INSERT INTO " + Helper.TABLE_ALLINDEXPOINTS + " values (@id, @latitude, @longitude, @streetname, @longlat)", sqlConnection);
Обратите внимание на пробел перед значениями.Также отсутствует закрывающая скобка.
addpoint.Parameters.AddWithValue("@id", id);
addpoint.Parameters.AddWithValue("@latitude",Convert.ToDouble(snappedPoints[j]["latitude"]));
addpoint.Parameters.AddWithValue("@longitude",Convert.ToDouble(snappedPoints[j]["longitude"]));
addpoint.Parameters.AddWithValue("@streetname", snappedPoints[j]["name"].ToString());
addpoint.Parameters.AddWithValue("@longlat", SqlGeography.STGeomFromText(new SqlChars(string.Format("POINT({0} {1})", snappedPoints[j]["latitude"], snappedPoints[j]["longitude"])), Helper.SRID));
addpoint.ExecuteNonQuery();
Также поделитесь подробностями вашего исключения вместе с возможными типами данных полей таблицы в случае, если вышеприведенное не решит вашу проблему.
EDIT
Помимо всех вышеупомянутых проблем, реальная проблема, с которой вы сталкиваетесь, будет решена добавлением следующей строки перед вызовом ExecuteQuery:
addpoint.Parameters[4].UdtTypeName = "Geography";
Поскольку SQL Server требуетВы должны явно установить UdtTypeName для параметра типа SqlGeography (и некоторых других типов, которые я здесь не упоминаю).
Таким образом, ваш обновленный код должен выглядеть примерно так:
addpoint.Parameters.AddWithValue("@id", id);
addpoint.Parameters.AddWithValue("@latitude",Convert.ToDouble(snappedPoints[j]["latitude"]));
addpoint.Parameters.AddWithValue("@longitude",Convert.ToDouble(snappedPoints[j]["longitude"]));
addpoint.Parameters.AddWithValue("@streetname", snappedPoints[j]["name"].ToString());
addpoint.Parameters.AddWithValue("@longlat", SqlGeography.STGeomFromText(new SqlChars(string.Format("POINT({0} {1})", snappedPoints[j]["latitude"], snappedPoints[j]["longitude"])), Helper.SRID));
addpoint.Parameters[4].UdtTypeName = "Geography";
addpoint.ExecuteNonQuery();
Надеюсь, что это решит все ваши проблемы.
Еще одно замечание - используйте Helper.SRID = 4326 для предоставленного формата строки.