Я создал структуру для хранения пространственных типов и создал функцию сканирования, которая помогает запрашивать строки в моей базе данных. У меня проблемы с вставкой этого типа.
Я могу вставить данные, используя следующий sql;
INSERT INTO 'table' ('spot') VALUES (GeomFromText('POINT(10 10)'));
Если я использую интерфейс Value в database / sql / driver;
type Value interface {}
Значение - это значение, которое драйверы должны уметь обрабатывать. Это либо nil, либо экземпляр одного из следующих типов:
int64
float64
bool
[]байт
string [*] везде, кроме Rows.Next.
время. время
И используйте этот код;
func (p Point) Value() (driver.Value, error) {
return "GeomFromText('" + p.ToWKT() + "')", nil
}
Я получаю следующий оператор sql, идущий в базу данных;
INSERT INTO 'table' ('spot') VALUES ('GeomFromText('POINT(10 10)')');
Проблема в том, что функция GeomFromText заключена в кавычки. Есть ли способ избежать этого сценария? Я использую gorm и стараюсь свести к минимуму сырые sql-запросы.
Тип mysql, используемый на стороне базы данных, является точкой.
limit
,My Column
илиthis-thing
- person Drew   schedule 12.12.2015GeomFromText
в запросе и вернутьPoint
Value
методp.ToWKT()
? - person jmaloney   schedule 12.12.2015db.Exec("INSERT INTO 'table' ('spot') VALUES (GeomFromText($1))", p.ToWKT())
будет работать, однако я стараюсь избегать использования необработанных запросов sql в этом качестве. Я знаю, что мой код не работает, потому чтоfunc (p Point) Value()
возвращает строку, а моя функция MySQL помещается в кавычки. Есть ли способ использовать этот интерфейс и заключить только часть строки в кавычки? - person devfubar   schedule 12.12.2015