ホームページ バックエンド開発 Golang MySQLサーバーからのデータの読み取り

MySQLサーバーからのデータの読み取り

Jul 29, 2024 am 08:01 AM

Reading data from Mysql server

必要なパッケージをインポートし、データベース内の tb_student テーブルの例と同じスキーマを持つ構造体を準備します。後で、この構造体はクエリ結果のコンテナーとして使用されます。データ型。

package main
import "fmt"
import "database/sql"
import _ "github.com/go-sql-driver/mysql"


type student struct {
 id string,
 name string,
 age int,
 grade int,
}

使用するデータベース ドライバーは、_ 記号を使用してインポートする必要があります。これは、database/sql パッケージで必要であっても、ドライバーと直接対話しないためです。

次に、データベースに接続する関数を作成します。

func connect() (*sql.DB, error) {
 db, err := sql.Open("mysql","root:@tcp(127.0.0.1:3306)/db_learn_go")
 if err != nil {
  return nil, err
 }
 return db, nil
}

私たちが使用する mysql ドライバーの接続文字列スキームは非常に独特です。以下の root@tcp(127.0.0.1:3306)/db_learn_go は、外出先の MYSQL ドライバー ドライバーで使用できる接続文字列スキームです。別の mysql では、使用するドライバーによって接続スキームが異なる場合があります。

user:password@tcp(host:port)/dbname
user@tcp(host:port)/dbname

以下は、connect() 関数で使用される接続文字列の説明です。

root@tcp(127.0.0.1:3306)/db_learn_go
// user => root
// password =>
// host => 127.0.0.1 atau localhost
// port => 3306
// dbname => db_learn_go

データベースとの接続機能を作成したら、データベースサーバーからデータを読み取るプロセスを練習します。関数を準備します
sqlQuery() と次のコード。

func sqlQuery() {
 db, err := connect()
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 defer db.Close()
 var age = 27
 rows, err := db.Query("select id, name, grade from tb_student where age = ?
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 defer rows.Close()
 var result []student
 for rows.Next() {
 var each = student{}
 var err = rows.Scan(&each.id, &each.name, &each.grade)
 if err != nil {
 fmt.Println(err.Error())
 return
 }
 result = append(result, each)
 }
 if err = rows.Err(); err != nil {
 fmt.Println(err.Error())
 return
 }
 for _, each := range result {
 fmt.Println(each.name)
 }
}

新しい接続が作成されるたびに、常に接続インスタンスを閉じることを忘れないでください。上記のコードのように defer キーワードを使用できます。 defer
db.Close() .
db.Query() 関数は、SQL クエリを実行するために使用されます。関数の 2 番目のパラメーターは可変長であるため、空白のままにすることができます。上記のコードでは、where 句の 1 つの値が疑問符 (?) であることがわかります。

記号はその後のパラメーターの値 (年齢変数の値) に置き換えられます。 SQL インジェクションを防ぐために、このタイプのクエリ作成手法を強くお勧めします。この関数は、 sql.*Rows 型のインスタンスを生成します。これも、使用されなくなったら閉じる必要があります ( defer rows.Close() )。次に、要素タイプが struct Student の配列が、 result という名前で準備されます。後でクエリ結果が変数に保存されます。次に、条件参照を rows.Next() としてループが実行されます。このループを最初のレコードから最後まで1レコードずつ順番に総レコード数分実行します。 sql.Rows 関数の Scan() メソッドは、反復されているレコードの値を取得し、ポインター変数に格納します。レコード フィールドの格納に使用される変数は、クエリで選択されたフィールドに従って、可変個引数パラメーターとして順番に書き込まれます。詳細については、以下の比較を参照してください。 // クエリ
ID、名前、学年を選択...
// スキャン
rows.Scan(&each.id, &each.name, &each.grade ...
取得されたレコード データは、ステートメント
を介して結果スライスに追加されます。 result = append(result, each) .
OK、あとは main で sqlQuery() 関数を呼び出して、プログラムを実行するだけです。

関数 main() {
sqlQuery()
}

私は普通のブログライターです。まだ至らない点が多々あるかもしれませんが、ご容赦ください。

以上がMySQLサーバーからのデータの読み取りの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

HTTPミドルウェアロギングの例を例に進めます HTTPミドルウェアロギングの例を例に進めます Aug 03, 2025 am 11:35 AM

GOのHTTPログミドルウェアは、リクエストメソッド、パス、クライアントIP、および時間がかかることを記録できます。 1. http.handlerfuncを使用してプロセッサをラップします。2。next.servehttpを呼び出す前後の開始時間と終了時間を記録します。完全なサンプルコードの実行が検証されており、中小のプロジェクトの開始に適しています。拡張機能の提案には、ステータスコードのキャプチャ、JSONログのサポート、リクエストIDトラッキングが含まれます。

Golangの環境変数をどのように操作しますか? Golangの環境変数をどのように操作しますか? Aug 19, 2025 pm 02:06 PM

goprovides-built-built-insupportfor handlingenvironmentvariablesviatheospackage、developerstoread、set、andmanageenvironmentdatasecurelylelyandyly.toreadavariable、useos.getenv( "key")、whoreturnsenemptringtringifthesnoteset、lo

サブプロセスを実行している例で進みます サブプロセスを実行している例で進みます Aug 06, 2025 am 09:05 AM

OS/execパッケージを使用して子プロセスを実行し、exec.commandを介してコマンドを作成しますが、すぐに実行しません。 2。.output()でコマンドを実行し、stdoutをキャッチします。 Exitコードがゼロ以外の場合は、exec.exiterrorを返します。 3。.start()を使用してブロックせずにプロセスを開始し、.stdoutpipe()と組み合わせて出力をリアルタイムでストリーミングします。 4。.stdinpipe()を介してプロセスにデータを入力し、書き込み後、パイプラインを閉じて.wait()を呼び出して最後を待つ必要があります。 5。Exec.exiterrorは、ゾンビプロセスを避けるために、故障したコマンドの出口コードとstderrを取得するために処理する必要があります。

GOアプリケーションの標準プロジェクトレイアウトは何ですか? GOアプリケーションの標準プロジェクトレイアウトは何ですか? Aug 02, 2025 pm 02:31 PM

答えは次のとおりです。GOアプリケーションには必須のプロジェクトレイアウトがありませんが、コミュニティは一般に、保守性とスケーラビリティを改善するために標準構造を採用しています。 1.CMD/プログラムの入り口を保存します。各サブディレクトリは、CMD/MyApp/Main.goなどの実行可能ファイルに対応しています。 2.内部/保存プライベートコード、外部モジュールによってインポートすることはできず、ビジネスロジックとサービスのカプセル化に使用されます。 3.PKG/ストア他のプロジェクトをインポートするための公に再利用可能なライブラリ。 4.API/オプションでOpenapi、Protobuf、およびその他のAPI定義ファイルを保存します。 5.Config/、Scripts/、およびWeb/Store構成ファイル、スクリプト、Webリソース。 6.ルートディレクトリにはgo.mod and go.sumが含まれています

IF-ELSE IN GOのような条件付きステートメントをどのように使用しますか? IF-ELSE IN GOのような条件付きステートメントをどのように使用しますか? Aug 02, 2025 pm 03:16 PM

GoのIF-Elseステートメントは括弧を必要としませんが、巻き毛の装具を使用する必要があります。スコープを制限する場合の変数の初期化をサポートします。条件は、エラーチェーンを介して審査できます。これは、エラーチェックによく使用されます。可変宣言と条件の組み合わせは、コードのシンプルさとセキュリティを改善することができます。

Golangの標準的なライブラリロギングの代替品は何ですか? Golangの標準的なライブラリロギングの代替品は何ですか? Aug 05, 2025 pm 08:36 PM

fornewgo1.21プロジェクト、useSlogforofficialStructuredloggingsupport;

Go Runコマンドは何をしますか? Go Runコマンドは何をしますか? Aug 03, 2025 am 03:49 AM

Gorunは、GOプログラムをすばやくコンパイルして実行するコマンドです。 1.コンパイルを完了して1つのステップで実行し、一時的な実行可能ファイルを生成し、プログラムが終了した後に削除します。 2。これは、開発とテストが簡単なメイン機能を含む独立したプログラムに適しています。 3.マルチファイル操作をサポートし、Gorun*.goまたはすべてのファイルを介して実行できます。 4.依存関係を自動的に処理し、モジュールシステムを使用して外部パッケージを解析します。 5.ライブラリやパッケージには適しておらず、永続的なバイナリファイルを生成しません。したがって、スクリプト、学習、頻繁な変更中の迅速なテストに適しています。それは効率的で簡潔なランニング方法です。

GO Webアプリケーションでルーティングをどのように処理しますか? GO Webアプリケーションでルーティングをどのように処理しますか? Aug 02, 2025 am 06:49 AM

GOアプリケーションでのルーティングは、プロジェクトの複雑さに依存します。 1.標準のライブラリNet/HTTPSERVEMUXは、外部依存関係のない単純なアプリケーションに適しており、軽量ですが、URLパラメーターと高度なマッチングをサポートしていません。 2。CHIなどのサードパーティルーターは、モジュラー設計に適したミドルウェア、パスパラメーター、ネストされたルーティングを提供します。 3. GINは、APIやマイクロサービスに適した優れたパフォーマンス、組み込みのJSON処理、リッチ機能を備えています。柔軟性、パフォーマンス、または機能統合が必要かどうかに基づいて選択する必要があります。小規模プロジェクトは標準的なライブラリを使用しており、中型および大規模プロジェクトはChiまたはGinを推奨し、最終的に単純なものから複雑なものまでスムーズな拡大を達成します。

See all articles