logo

Golang学习(二十四)家庭记账项目

作者:c4t2024.01.05 14:26浏览量:10

简介:通过一个简单的家庭记账项目,我们将学习如何使用Golang进行Web开发。我们将构建一个基本的CRUD(创建、读取、更新、删除)应用程序,并探索如何使用Golang进行数据库操作。这个项目将帮助你理解Golang在Web开发中的实际应用,以及如何与数据库进行交互。

家庭记账项目概述
家庭记账项目是一个简单的应用程序,可以帮助用户记录家庭支出和收入。通过这个项目,我们将学习如何使用Golang构建Web应用程序,并掌握基本的数据库操作。
项目结构
首先,我们需要创建一个新的Golang项目。在终端中,导航到你的项目目录并运行以下命令:

  1. go mod init <project-name>

这将初始化一个新的Go模块,并创建一个名为go.mod的文件。接下来,我们将在main.go文件中编写应用程序的入口点。
数据库设置
为了存储家庭记账的数据,我们将使用SQLite数据库。在main.go文件中,我们需要导入必要的包并创建数据库连接。以下是一个简单的示例:

  1. import ("database/sql"
  2. "fmt"
  3. "_"
  4. "github.com/mattn/go-sqlite3")
  5. func main() {
  6. db, err := sql.Open("sqlite3", "file:family_finance.db?_mode=memory&cache=shared&_fk=1")
  7. if err != nil {
  8. panic(err)
  9. }
  10. defer db.Close()
  11. fmt.Println("Database created and connected")
  12. }

在上面的代码中,我们导入了database/sql包和github.com/mattn/go-sqlite3包,用于操作SQLite数据库。我们使用sql.Open函数打开数据库连接,并将数据库文件命名为family_finance.db。然后,我们检查是否有任何错误发生,如果没有则关闭数据库连接。
接下来,我们需要创建必要的数据库表来存储家庭记账的数据。我们可以使用以下命令创建一个名为finances的表:

  1. begin transaction;
  2. CREATE TABLE finances (
  3. id INTEGER PRIMARY KEY AUTOINCREMENT,
  4. date TEXT NOT NULL,
  5. description TEXT NOT NULL,
  6. amount REAL NOT NULL,
  7. type TEXT NOT NULL
  8. );
  9. commit;

上述命令将创建一个包含五个列的表:id、date、description、amount和type。这些列分别用于存储每条记录的唯一标识符、日期、描述、金额和类型(收入或支出)。
CRUD操作
接下来,我们将实现CRUD操作来与数据库进行交互。以下是每个操作的简单示例:

  • 创建(Create): 使用INSERT语句将新记录插入到数据库中。例如:
    1. sql := "INSERT INTO finances (date, description, amount, type) VALUES (?, ?, ?, ?)"
    2. _, err = db.Exec(sql, "2023-07-01", "Groceries", 100.00, "expense")
    3. if err != nil {
    4. panic(err)
    5. }
    在上面的代码中,我们使用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语句。你可以根据需要自行实现这些操作。

相关文章推荐

发表评论