Home > Backend Development > Golang > How to perform database query in Golang

How to perform database query in Golang

PHPz
Release: 2023-04-18 09:44:43
Original
1830 people have browsed it

Golang is an efficient, fast, and powerful programming language that can be used to build various applications, especially outstanding in web development. When used in conjunction with a database, Golang provides some powerful tools to help developers manipulate databases. In this article, we will focus on how Golang performs database queries.

1. Golang database query

There are two main ways to query the database in Golang: one is to use the database/sql package provided in the standard library, and the other is to use the ORM framework. For example, GORM, XORM, etc. Here we will introduce how to use the database/sql package for querying.

database/sql is a package in the Golang standard library for operating relational databases. Use it to connect to the database and complete operations such as import, insert, update and delete. Before using database/sql, you need to install the corresponding database driver. For example, if you want to connect to MySQL, you need to install the MySQL driver. Commonly used database drivers in Golang include: mysql, sqlite, postgres, etc.

2. Golang connects to the database

Before using database/sql to query the database, we must first connect to the database. The following is a sample code for connecting to a MySQL database:

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()
}
Copy after login

Among them, the sql.Open() function returns a database object db, which we can use to operate the database. Another thing to note is that after the database operation is completed, the database needs to be closed through the defer keyword.

3. Golang query data

After successfully connecting to the database, we can execute SQL statements through the db object to query the data. The following is a sample code for querying a piece of data:

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

type User struct {
    Id       int
    Name     string
    Age      int
}

func main() {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    var (
        id       int
        name     string
        age      int
    )

    err = db.QueryRow("SELECT id, name, age FROM users WHERE id = ?", 1).Scan(&id, &name, &age)
    switch {
    case err == sql.ErrNoRows:
        fmt.Println("没有这条记录!")
    case err != nil:
        panic(err.Error())
    default:
        user := User{Id:id, Name:name, Age:age}
        fmt.Println(user)
    }
}
Copy after login

In this sample code, we define a user structure User and query the data with id 1 in the database through the QueryRow() method. The QueryRow() method executes a query and scans its results into a row of data. Here, we use the Scan() method to map the database query results to the User data structure we defined, and finally output the data.

Similarly, we can also query multiple rows of data. The following is a sample code for querying multiple rows of data:

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

type User struct {
    Id       int
    Name     string
    Age      int
}

func main() {
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name?charset=utf8")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    rows, err := db.Query("SELECT id, name, age FROM users")
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    var users []User
    for rows.Next() {
        var user User
        err := rows.Scan(&user.Id, &user.Name, &user.Age)
        if err != nil {
            panic(err.Error())
        }
        users = append(users, user)
    }

    fmt.Println(users)
}
Copy after login

In this sample code, we use the Query() method to query the user table in the database, and scan all query results through the for loop and Next() method . Within the loop body, we define a User structure and map the database query results to the structure through the Scan() method. Finally, we save the results into a slice and output the slice.

4. Summary

Through the above sample code, we can see that it is very convenient and efficient to use the database/sql package in Golang for database query. We can flexibly operate the database and handle various data query needs. Based on this, Golang performs very well in web development. Of course, in order to get a better experience, we can also choose to use the ORM framework to operate the database.

The above is the detailed content of How to perform database query in Golang. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template