2

空間型を格納する構造体を作成し、データベース内の行をクエリするのに役立つスキャン関数を作成しました。このタイプの挿入に問題があります。

次のSQLを使用してデータを挿入できます。

INSERT INTO 'table' ('spot') VALUES (GeomFromText('POINT(10 10)'));

database/sql/driverで Value インターフェイスを使用する場合;

タイプ値インターフェース{}

値は、ドライバーが処理できなければならない値です。nil または次のいずれかのタイプのインスタンスです。

int64

float64

ブール

[]バイト

文字列 [*] 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 タイプはポイントです。

4

1 に答える 1