How to use MySQL and Go language to develop a simple message system
1. Introduction
The message system is one of the common functions in Internet applications. It is used on websites Or the communication between users can be realized in the application. This article will introduce how to develop a simple message system using MySQL and Go language, and provide specific code examples.
2. Preparation work
Before development, you need to prepare some tools and environment:
3. Database design
The data structure of the message system is relatively simple, involving only one table:
4. Code implementation
Connecting to the database
First, we need to create a database connection function to connect to the MySQL database:
import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func GetDB() (*sql.DB, error) { db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/message_board") if err != nil { return nil, err } return db, nil }
Please replace "root" and "password" with your database username and password.
Create a message
Next, we create a function to insert a message into the database:
func CreateMessage(name, content string) error { db, err := GetDB() if err != nil { return err } defer db.Close() _, err = db.Exec("INSERT INTO message (name, content, created_at) VALUES (?, ?, NOW())", name, content) if err != nil { return err } return nil }
This function uses db.Exec( )
method executes the SQL statement and passes in parameters through placeholders.
Get the message list
We also need a function to get the message list:
type Message struct { ID int Name string Content string CreatedAt time.Time } func GetMessages() ([]Message, error) { db, err := GetDB() if err != nil { return nil, err } defer db.Close() rows, err := db.Query("SELECT * FROM message ORDER BY created_at DESC") if err != nil { return nil, err } defer rows.Close() var messages []Message for rows.Next() { var m Message err := rows.Scan(&m.ID, &m.Name, &m.Content, &m.CreatedAt) if err != nil { return nil, err } messages = append(messages, m) } return messages, nil }
This function uses db.Query()
The method executes the SQL query and maps the query results to the structure through the rows.Scan()
method.
5. Usage Example
Finally, we create a sample function to demonstrate how to use the above function:
func main() { err := CreateMessage("John", "Hello, world!") if err != nil { log.Fatal(err) } messages, err := GetMessages() if err != nil { log.Fatal(err) } for _, m := range messages { fmt.Printf("留言ID:%d,留言者:%s,留言内容:%s,留言时间:%s ", m.ID, m.Name, m.Content, m.CreatedAt.Format("2006-01-02 15:04:05")) } }
Run the above sample function, you can see the insertion messages and the obtained message list.
6. Summary
This article introduces how to use MySQL and Go language to develop a simple message system, and provides specific code examples. You can expand and optimize it according to your own needs, such as adding functions such as message reply and user authentication. I hope this article will be helpful to you in learning and applying MySQL and Go language development!
The above is the detailed content of How to develop a simple message system using MySQL and Go language. For more information, please follow other related articles on the PHP Chinese website!