当前位置: 首页 > 知识库问答 >
问题:

Golang和MySQL-管理连接

谯乐池
2023-03-14
package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    "html/template"
    "net/http"
)

var db *sql.DB

var pageTemplate = template.Must(template.ParseFiles("index.html"))

type Items []string

func main() {
    db, err := sql.Open("mysql",
        "username:passwordl@tcp(127.0.0.1:3306)/databasename")
    checkErr(err)
    defer db.Close()
    _, err = db.Exec(
        `
    CREATE TABLE IF NOT EXISTS items (
      item_id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
      item TEXT
    );
    `)
    checkErr(err)
    http.HandleFunc("/", mainHandler)
    http.ListenAndServe(":3000", nil)
}

func mainHandler(w http.ResponseWriter, r *http.Request) {
    var item string
    var items Items
    stmt, err := db.Prepare("select item from items")
    checkErr(err)
    defer stmt.Close()
    rows, err := stmt.Query()
    checkErr(err)
    defer rows.Close()
    for rows.Next() {
        err := rows.Scan(&item)
        checkErr(err)
        items = append(items, item)
    }
    if err = rows.Err(); err != nil {
        checkErr(err)
    }
    pageTemplate.Execute(w, items)
}

func checkErr(err error) {
    if err != nil {
        fmt.Println(err)
    }
}
stmt, err := db.Prepare("select item from items")

如果问题模棱两可,请道歉。

共有1个答案

慕阳平
2023-03-14

问题是,您在主函数中重新声明了db。

变化:

db, err := sql.Open("mysql",

致:

var err error
db, err = sql.Open("mysql", 
 类似资料:
  • 管理交易 在 1.4 版更改: 对会话事务管理进行了修改,使其更清晰、更易于使用。特别是,它现在具有“autobegin”操作的特点,这意味着事务开始的点可以被控制,而不必使用传统的“autocommit”模式。 这个 Session 一次跟踪单个“虚拟”事务的状态,使用一个名为 SessionTransaction 。然后,该对象利用基础的 Engine 或引擎,而这些引擎 Session 对象

  • 本文向大家介绍golang中连接mysql数据库,包括了golang中连接mysql数据库的使用技巧和注意事项,需要的朋友参考一下 golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现 一般连接mysql首先需要调用sql.Open函数,但是此时并没有真正的去

  • 什么是 MySQL MySQL 是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL 数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。 MySQL由于其性能高、成本低、可靠性好,已经成为最流行的开源数据库,被广泛地应用在 Internet 上的中小型网站中。随着 MySQL 的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科、Google 和 F

  • 问题内容: 我正在使用github.com/go-sql-driver/mysql驱动程序。 我打开一个数据库: 然后我有两个函数,每个函数用下面的mysql代码调用200次: 第二: 第一个是恐慌。 当我只打开数据库一次时,如何有多个连接?如何关闭它们? 问题答案: sql.Open并没有真正打开与数据库的连接。 sql.DB维护与数据库的连接池。每次查询数据库时,程序都会尝试从该池获取连接,否

  • 我从Ruby来,现在正在看围棋。我开始编写一些代码来检查对给定主机的TLS支持。

  • 创建一个连接 类org.jivesoftware.smack.XMPPConnection管理你的XMPP服务器的连接,默认实现类为org.jivesoftware.smack.XMPPTCPConnection。 主要是使用两个构造函数,第一个是 XMPPTCPConnection(String) ,它把 你想连接到服务器名称 作为参数。 连接和断开 // Create the configur