Go 言語でデータベース操作関数を実装する方法
効率的で簡潔なプログラミング言語である Go 言語は、サーバー バックエンドの開発やデータベース操作に非常に適しています。実際のアプリケーション開発では、データベースの操作が欠かせません。今回はGo言語でデータベース操作機能を実装する方法と、よくある操作例を紹介します。
1. データベース接続
Go 言語では、サードパーティのライブラリを使用してさまざまな種類のデータベースに接続できます。その中で最もよく使われるのは、標準ライブラリの「database/sql」パッケージと、「go-sqlite3」「mysql」「postgres」などの各種データベースドライバーです。
まず、必要なパッケージをインポートする必要があります:
import ( "database/sql" _ "github.com/go-sql-driver/mysql" // MySQL驱动 )
次に、「sql.Open」関数を使用してデータベースに接続できます:
db, err := sql.Open("mysql", "user:password@tcp(localhost:8889)/mydb") if err != nil { log.Fatal(err) } defer db.Close()
上記のコードでは、MySQL ドライバーを使用し、データベース接続のアドレスと資格情報を指定しました。接続が成功すると、「db」オブジェクトを通じてさまざまなデータベース操作を実行できます。
2. SQL ステートメントの実行
一般に、データベース操作には主にクエリ、挿入、更新、削除などの機能が含まれます。以下に、一般的なデータベース操作の例をいくつか示します。
rows, err := db.Query("SELECT * FROM users") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { var id int var name string err := rows.Scan(&id, &name) if err != nil { log.Fatal(err) } fmt.Println(id, name) } err = rows.Err() if err != nil { log.Fatal(err) }
上記のコードでは、「db.Query」関数を通じて SELECT ステートメントを実行し、「rows.Next」と「rows .Next」を渡しました。 「スキャン」してクエリ結果を取得します。クエリ結果の使用後にリソースが確実に解放されるようにするには、「defer rows.Close()」を使用する必要があることに注意してください。
stmt, err := db.Prepare("INSERT INTO users(name) VALUES(?)") if err != nil { log.Fatal(err) } defer stmt.Close() res, err := stmt.Exec("John") if err != nil { log.Fatal(err) } id, err := res.LastInsertId() if err != nil { log.Fatal(err) } fmt.Println("Inserted record ID:", id)
上記のコードでは、「db.Prepare」関数を使用して INSERT ステートメントを準備し、「stmt.Exec」を使用して挿入操作。次に、「res.LastInsertId」を通じて、挿入されたレコードに対応する ID を取得できます。
stmt, err := db.Prepare("UPDATE users SET name=? WHERE id=?") if err != nil { log.Fatal(err) } defer stmt.Close() res, err := stmt.Exec("John Smith", 1) if err != nil { log.Fatal(err) } rowsAffected, err := res.RowsAffected() if err != nil { log.Fatal(err) } fmt.Println("Rows affected:", rowsAffected)
上記のコードでは、「db.Prepare」関数を通じて UPDATE ステートメントを準備し、「stmt.Exec」を使用して更新を実行しました。操作する。次に、「res.RowsAffected」を介して影響を受ける行の数を取得できます。
stmt, err := db.Prepare("DELETE FROM users WHERE id=?") if err != nil { log.Fatal(err) } defer stmt.Close() res, err := stmt.Exec(1) if err != nil { log.Fatal(err) } rowsAffected, err := res.RowsAffected() if err != nil { log.Fatal(err) } fmt.Println("Rows affected:", rowsAffected)
上記のコードでは、「db.Prepare」関数を通じて DELETE ステートメントを準備し、「stmt.Exec」を使用して削除を実行しました。操作する。同様に、「res.RowsAffected」を通じて影響を受ける行の数を取得できます。
3. トランザクション処理
実際のアプリケーション開発において、トランザクション処理は非常に重要な機能です。 Go 言語では、「db.Begin」を使用してトランザクションを開始し、「tx.Commit」を使用してトランザクションをコミットできます。トランザクション処理中にエラーが発生した場合、「tx.Rollback」を使用してトランザクションをロールバックできます。
tx, err := db.Begin() if err != nil { log.Fatal(err) } stmt, err := tx.Prepare("INSERT INTO users(name) VALUES(?)") if err != nil { tx.Rollback() log.Fatal(err) } defer stmt.Close() _, err = stmt.Exec("John") if err != nil { tx.Rollback() log.Fatal(err) } err = tx.Commit() if err != nil { log.Fatal(err) }
上記のコードでは、「db.Begin」を使用してトランザクションを開始し、トランザクション内で挿入操作を実行します。エラーが発生した場合は、「tx.Rollback」を使用してトランザクションをロールバックし、それ以外の場合は、「tx.Commit」を使用してトランザクションをコミットします。
概要:
この記事の導入部を通じて、Go 言語でデータベース操作関数を実装する方法を学び、いくつかの一般的なデータベース操作の例を示しました。 「database/sql」パッケージと適切なデータベース ドライバーを使用すると、さまざまなタイプのデータベースを簡単に接続できることに注意してください。この記事が Go 言語でデータベース操作を実行するのに役立つことを願っています。
以上がGo言語でデータベース操作関数を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。