## 建立表t
```golang
CREATE TABLE `t` (
`id` int(11) NOT NULL,
`a` int(11) DEFAULT NULL,
`t_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `a` (`a`),
KEY `t_modified` (`t_modified`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
```
## golang 代码
查询一行
*功能点都放在注释中了*
```golang
package main
import (
"database/sql" // sql 官方接口
"fmt"
"log"
_ "github.com/go-sql-driver/mysql" // mysql 驱动
)
const (
dbName = "test" //定义数据库名
DB_Driver = "root:123456@tcp(127.0.0.1:3306)/" + dbName // 定义数据库连接字符串
)
// TModel 结构体定义
type TModel struct {
Id int `db:"id"`
A int `db:"a"`
Modify string `db:"t_modified"`
}
// CreateDB 创建数据库连接
func CreateDB() (*sql.DB, error) {
db, err := sql.Open("mysql", DB_Driver)
if err != nil {
return nil, err
}
return db, err
}
func main() {
db, err := CreateDB()
if err != nil { // 判断如果有错误输出并结束程序
log.Fatal(err)
}
defer db.Close() // 最后关闭连接
row := db.QueryRow("select * from t where id = ?;", 1) // 查询一行
if err != nil {
log.Fatal(row)
}
var t TModel
err = row.Scan( // 将数据填充到变量
&t.Id,
&t.A,
&t.Modify,
)
if err != nil {
log.Fatal(err)
}
// 输出填充后的数据
fmt.Printf("%#v\n", t)
}
```
有疑问加站长微信联系(非本文作者))