Home >Backend Development >Golang >How to perform database query in Golang
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() }
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) } }
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) }
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!