Golang学习(二十四)家庭记账项目
2024.01.05 14:26浏览量:10简介:通过一个简单的家庭记账项目,我们将学习如何使用Golang进行Web开发。我们将构建一个基本的CRUD(创建、读取、更新、删除)应用程序,并探索如何使用Golang进行数据库操作。这个项目将帮助你理解Golang在Web开发中的实际应用,以及如何与数据库进行交互。
家庭记账项目概述
家庭记账项目是一个简单的应用程序,可以帮助用户记录家庭支出和收入。通过这个项目,我们将学习如何使用Golang构建Web应用程序,并掌握基本的数据库操作。
项目结构
首先,我们需要创建一个新的Golang项目。在终端中,导航到你的项目目录并运行以下命令:
go mod init <project-name>
这将初始化一个新的Go模块,并创建一个名为go.mod
的文件。接下来,我们将在main.go
文件中编写应用程序的入口点。
数据库设置
为了存储家庭记账的数据,我们将使用SQLite数据库。在main.go
文件中,我们需要导入必要的包并创建数据库连接。以下是一个简单的示例:
import ("database/sql"
"fmt"
"_"
"github.com/mattn/go-sqlite3")
func main() {
db, err := sql.Open("sqlite3", "file:family_finance.db?_mode=memory&cache=shared&_fk=1")
if err != nil {
panic(err)
}
defer db.Close()
fmt.Println("Database created and connected")
}
在上面的代码中,我们导入了database/sql
包和github.com/mattn/go-sqlite3
包,用于操作SQLite数据库。我们使用sql.Open
函数打开数据库连接,并将数据库文件命名为family_finance.db
。然后,我们检查是否有任何错误发生,如果没有则关闭数据库连接。
接下来,我们需要创建必要的数据库表来存储家庭记账的数据。我们可以使用以下命令创建一个名为finances
的表:
begin transaction;
CREATE TABLE finances (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
description TEXT NOT NULL,
amount REAL NOT NULL,
type TEXT NOT NULL
);
commit;
上述命令将创建一个包含五个列的表:id、date、description、amount和type。这些列分别用于存储每条记录的唯一标识符、日期、描述、金额和类型(收入或支出)。
CRUD操作
接下来,我们将实现CRUD操作来与数据库进行交互。以下是每个操作的简单示例:
- 创建(Create): 使用INSERT语句将新记录插入到数据库中。例如:
在上面的代码中,我们使用sql := "INSERT INTO finances (date, description, amount, type) VALUES (?, ?, ?, ?)"
_, err = db.Exec(sql, "2023-07-01", "Groceries", 100.00, "expense")
if err != nil {
panic(err)
}
db.Exec
函数执行INSERT语句,将一条新的记录插入到finances
表中。我们使用问号(?)作为参数的占位符,并传递相应的参数值。 - 读取(Read): 使用SELECT语句从数据库中检索记录。例如:
`go m := make([]map[string]string) bytes, err := db.Query(""SELECT * FROM finances"") if err != nil { panic(err) } bytes.Next() { m = append(m, map[string]string{ bytes.Scan(&id, &date, &description, &amount, &type) bytes.Close()}}
在上面的代码中,我们使用db.Query
函数执行SELECT语句,从finances
表中检索所有记录。我们使用循环遍历结果集,并将每条记录映射到一个字符串切片中。最后,我们将结果存储在m
变量中。 - 更新(Update)和删除(Delete)操作类似于创建和读取操作,只是使用UPDATE和DELETE语句而不是INSERT和SELECT语句。你可以根据需要自行实现这些操作。
发表评论
登录后可评论,请前往 登录 或 注册