ホームページ > バックエンド開発 > Golang > Go の SQL パッケージは動的クエリとテーブル構造を処理できますか?

Go の SQL パッケージは動的クエリとテーブル構造を処理できますか?

Susan Sarandon
リリース: 2024-10-31 00:38:02
オリジナル
738 人が閲覧しました

Can Go's SQL Package Handle Dynamic Queries and Table Structures?

Go の SQL パッケージは静的に定義されたクエリに制限されていますか?

元のクエリ:

Go SQL ドキュメントには、データベースからのデータには、列数とデータ型に関する静的な知識が必要です。これにより、アドホック クエリと動的テーブル構造の処理に関する懸念が生じます。

回答:

Rows.Scan() が固定パラメータを必要とするのは事実ですが、sql.Rows type は、列名を動的に取得するための Columns() メソッドを提供します。さらに、Scan() メソッドは次のオプションをサポートしています。

  • *[]byte を使用して生の列値をバイト スライスとして取得します。
  • *interface{} を使用して列を取得します。

解決策:

これらの機能を組み合わせることで、アドホック クエリと動的テーブル構造をサポートする柔軟なコードを作成できます:

<code class="go">columnNames, err := rows.Columns()
if err != nil {
    // Handle error
}

columns := make([]interface{}, len(columnNames))
columnPointers := make([]interface{}, len(columnNames))
for i := range columnNames {
    columnPointers[i] = &columns[i]
}

if err := rows.Scan(columnPointers...); err != nil {
    // Handle error
}

// columns slice now contains decoded column values for the current row</code>
ログイン後にコピー

追加のテーブル情報がある場合は、必要に応じてロジックを最適化できます。

以上がGo の SQL パッケージは動的クエリとテーブル構造を処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート