1. 下载安装包

go get github.com/Go-SQL-Driver/MySQL
go install github.com/Go-SQL-Driver/MySQL

2. 连接池

This essentially means that, every time you query your database, you are using a connection from a pool of connections that have been set up on application startup. These connections are reused, time and time again, and this subsequently means you aren’t creating and destroying a new connection every time you perform a query.

3. 数据库操作

连接 - db是connection

db, err := sql.Open("mysql", "<username>:<password>@tcp(127.0.0.1:3306)/<yourdatabase>")
if err != nil {
panic(err.Error())
}
defer db.Close()
// here you can use the connection, it will be closed when function returns

插入数据

insert, err := db.Query("insert into t1 values(2, 'here')")
if err != nil {
panic(err.Error())
}
defer insert.Close()

搜索

- struct. 如果外部包导入失败,尝试用tag := Tag{ID: , Name:}导入一次再改成var tag Tag...

type Tag struct {
ID int
Name string
}

- 导入

import (
"database/sql"
"fmt"
"log"
. "myproject/model"
_ "github.com/go-sql-driver/mysql"
)

- 程序

results, err := db.Query("Select * from t1")
if err != nil {
panic(err.Error())
}
for results.Next() {
//tag := Tag{ID: 1, Name: "hhh"}
var tag Tag
err = results.Scan(&tag.ID, &tag.Name)
if err != nil {
panic(err.Error())
}
log.Printf(tag.Name)
} -----------From Others
items := make([]*SomeStruct, 0, 10)
var ida, idb uint
for rows.Next() {
err = rows.Scan(&ida, &idb)
if err != nil { /* error handling */}
items = append(items, &SomeStruct{ida, idb})
}

- QueryRow

QueryRow executes a query that is expected to return at most one row. QueryRow calls Query, and then wraps the results in an sql.Row.

var tag Tag
// Execute the query
err = db.QueryRow("SELECT * FROM t1 where num = ?", ).Scan(&tag.ID, &tag.Name)
if err != nil {
panic(err.Error())
} log.Println(tag.ID)
log.Println(tag.Name)

Prepare Statement (Example)

stmt, err := db.Prepare("INSERT userinfo SET username=?,departname=?,created=?")
res, err := stmt.Exec("zhja", "研发", "2016-06-17")

获取最后一个自增ID

id, err := res.LastInsertId()

Golang - 数据库操作的更多相关文章

  1. golang数据库操作初体验

    在golang中,提供了标准的数据库接口database/sql包,做过数据库开发的应该知道,不同的数据库有不同的数据库驱动.比如mysql等,我们可以去找 https://golang.org/s/ ...

  2. golang学习笔记16 beego orm 数据库操作

    golang学习笔记16 beego orm 数据库操作 beego ORM 是一个强大的 Go 语言 ORM 框架.她的灵感主要来自 Django ORM 和 SQLAlchemy. 目前该框架仍处 ...

  3. 百亿数据百亿花, 库若恒河沙复沙,Go lang1.18入门精炼教程,由白丁入鸿儒,Go lang数据库操作实践EP12

    Golang可以通过Gorm包来操作数据库,所谓ORM,即Object Relational Mapping(数据关系映射),说白了就是通过模式化的语法来操作数据库的行对象或者表对象,对比相对灵活繁复 ...

  4. 如何在高并发环境下设计出无锁的数据库操作(Java版本)

    一个在线2k的游戏,每秒钟并发都吓死人.传统的hibernate直接插库基本上是不可行的.我就一步步推导出一个无锁的数据库操作. 1. 并发中如何无锁. 一个很简单的思路,把并发转化成为单线程.Jav ...

  5. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  6. MySQL 系列(二) 你不知道的数据库操作

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 本章内容: 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网 ...

  7. ABP创建数据库操作步骤

    1 ABP创建数据库操作步骤 1.1 SimpleTaskSystem.Web项目中的Web.config文件修改数据库配置. <add name="Default" pro ...

  8. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. django数据库操作和中间件

    数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...

随机推荐

  1. ffmpeg按比例缩放--"width / height not divisible by 2" 解决方法

    最近在处理视频的时候,有这么一个需求 如果视频的分辨率宽度大于960的话,就把宽度设为960,而高度按其比例进行缩放 如果视频的分辨率高度大于540的话,就把高度设为540,而宽度按其比例进行缩放 之 ...

  2. Android sdk manager 下载速度慢的问题

    不多说了,直接附上方法: 首先打开Ecplise 中Android sdk manager,打开后, 在此窗口的上方打开偏好设置选项,然后在里面设置HTTP Proxy server和HTTP Pro ...

  3. ActiveMQ 报错 Temporary Store limit is 51200 mb

    ERROR | Temporary Store limit is 51200 mb, whilst the temporary data directory: D:\tool\apache-actil ...

  4. 使用github搭建个人html网站

    前言:搭建个人网站早就想做了,最近有空就宅在家学习,突然发现github就可以搭建个人的纯html网站,于是开始了这项工作.转载请注明出处:https://www.cnblogs.com/yuxiao ...

  5. shiro标签的使用

    guest标签   用户没有身份验证时显示相应信息,即游客访问信息. user标签    用户已经身份验证/记住我登录后显示相应的信息. authenticated标签     用户已经身份验证通过, ...

  6. iTem2 保持连接,解决ssh的"Write failed: Broken pipe"问题

    方法一: profiles -> sessions -> When idel, send ASCII code 问题场景 服务器环境:阿里云 Linux CentOS 主机 客户端:Mac ...

  7. php 判断字符串长度和字符串为纯数字字符串

    <?php $str="123456a"; $str_a=123456"; if(is_numeric($str)){ 返回 false }else{ 返回 tru ...

  8. OTSU算法学习 OTSU公式证明

    OTSU算法学习   OTSU公式证明 1 otsu的公式如下,如果当前阈值为t, w0 前景点所占比例 w1 = 1- w0 背景点所占比例 u0 = 前景灰度均值 u1 = 背景灰度均值 u = ...

  9. opencv3.2.0形态学滤波之形态学梯度、顶帽、黑帽

    /*一.形态学梯度 (1)含义:是膨胀图和腐蚀图之差 (2)数学表达式:dst=morph-grad(src,element) =dilate(src,element) - erode(src,ele ...

  10. JS实现点击参数面板按钮显示或隐藏数据

    当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...