Go QueryRow (Single Row)

beginner
7 min

Go QueryRow (Single Row)

Welcome back to CodeYourCraft! Today, we're diving into the world of Go Programming, and specifically, we're focusing on the QueryRow function. This function is a powerful tool for retrieving a single row from a database, making it essential for real-world applications. Let's get started! 🎯

What is QueryRow?

The QueryRow function is a method provided by Go's database/sql package. It's used to execute a SQL query that returns a single row from the database. This function is useful when you know that your query will only return a single row. 📝

Basic Usage

Before we dive into the usage, let's set up our environment. We'll need a database connection, a database table, and some data to query.

go
package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) // Database connection details const ( DB_USER = "your_username" DB_PASS = "your_password" DB_NAME = "your_database_name" ) func main() { // Database connection db, err := sql.Open("mysql", DB_USER+":"+DB_PASS+"@tcp(127.0.0.1:3306)/"+DB_NAME) if err != nil { log.Fatal(err) } defer db.Close() // Query Row row := db.QueryRow("SELECT * FROM users WHERE id = 1") // Scan the result into a variable var id int var name string var email string err = row.Scan(&id, &name, &email) if err != nil { log.Fatal(err) } // Print the result fmt.Println("ID:", id) fmt.Println("Name:", name) fmt.Println("Email:", email) }

In the code above, we're using MySQL as our database. Replace your_username, your_password, and your_database_name with your actual database credentials. We're querying a table named users for a row with an id of 1, and we're storing the results in variables id, name, and email.

Advanced Usage

In some cases, you may need to handle multiple results or errors. Here's an example of how to do that:

go
func getUser(id int) (*User, error) { row := db.QueryRow("SELECT * FROM users WHERE id = ?", id) var user User err := row.Scan(&user.ID, &user.Name, &user.Email) if err != nil { return nil, err } return &user, nil }

In this example, we've created a function getUser that takes an id as an argument and returns a User struct and an error. We're using the ? placeholder for the id to prevent SQL injection. If there's an error during the scan or query, we're returning nil and the error.

📝 Note:

  • Make sure to handle the cases where no rows are returned or multiple rows are returned for the query.
  • Be careful when using raw SQL queries to prevent SQL injection attacks. Always use parameterized queries or prepared statements.

Quiz Time!

Quick Quiz
Question 1 of 1

What does the `QueryRow` function do in Go?

And that's it for today! With the QueryRow function, you can efficiently and effectively retrieve single rows from your databases in Go. Stay tuned for more Go tutorials here at CodeYourCraft! 🚀

Remember to practice, experiment, and have fun! Happy coding! 💡