golang操作mysql数据库

代码: mysql的增、删、改、查

package main

import (
"database/sql"
"fmt"
"strconv"
"time" _ "github.com/go-sql-driver/mysql"
) func main() { db, err := sql.Open("mysql", "root:Admin!1234@tcp(10.99.2.153:3306)/xes_nrcp?charset=utf8")
defer db.Close()
checkErr(err) //插入数据
insert(, db) //删除数据
delete(, db) //更新数据
update(, "设计部门", db) //查询数据
get(db) } func checkErr(err error) {
if err != nil {
panic(err)
}
} func get(db *sql.DB) {
rows, _ := db.Query("SELECT * FROM aaa_test")
cloumns, _ := rows.Columns() //获取列字段
for _, cloumn := range cloumns {
fmt.Print(cloumn + " ")
}
fmt.Println() //遍历返回结果
for rows.Next() {
rows.Scan(&cloumns[], &cloumns[], &cloumns[], &cloumns[])
fmt.Println(cloumns[], cloumns[], cloumns[], cloumns[])
}
} func insert(id int, db *sql.DB) {
//插入数据方式 stmt, _ := db.Prepare("INSERT aaa_test SET id=?,nameA=?,descA=?")
res, _ := stmt.Exec(id, "研发部门", "2012-12-09", time.Now())
resID, _ := res.LastInsertId()
fmt.Println(resID) //or
// stmt, _ := db.Prepare("INSERT aaa_test (id,nameA,descA,createTime)values (?,?,?,?)")
// res, _ := stmt.Exec(17, "研发部门", "2012-12-09", time.Now())
// id, _ := res.LastInsertId()
// fmt.Println(id) //or
// res, _ := db.Exec("INSERT aaa_test (id,nameA,descA)values (?,?,?)", 18, "研发部门", "2012-12-09")
// id, _ := res.LastInsertId()
// fmt.Println(id) //or
// db.Exec("INSERT aaa_test (id,nameA,descA,createTime)values (?,?,?,?)", 14, "qwe", "2012-12-09", time.Now()) //or
//db.Exec("INSERT aaa_test SET id=?,nameA=?,descA=?,createTime=?", id, "研发部门", "写写代码", time.Now()) } func delete(id int, db *sql.DB) {
stmt, err := db.Prepare("delete from aaa_test where id=?")
checkErr(err) res, err := stmt.Exec(id)
checkErr(err) affect, err := res.RowsAffected()
checkErr(err)
fmt.Println("删除数据影响行数:" + strconv.FormatInt(affect, )) } func update(id int, name string, db *sql.DB) {
stmt, err := db.Prepare("update aaa_test set nameA=? where id=?")
checkErr(err) res, err := stmt.Exec(name, id)
checkErr(err) affect, err := res.RowsAffected()
checkErr(err) fmt.Println(affect)
}

sql.Open()函数用来打开一个注册过的数据库驱动,go-sql-driver中注册了mysql这个数据库驱动,第二个参数是DSN(Data Source Name),它是go-sql-driver定义的一些数据库链接和配置信息。它支持如下格式:

  user@unix(/path/to/socket)/dbname?charset=utf8
  user:password@tcp(localhost:5555)/dbname?charset=utf8
  user:password@/dbname
  user:password@tcp([de:ad:be:ef::ca:fe]:80)/dbname

db.Prepare()函数用来返回准备要执行的sql操作,然后返回准备完毕的执行状态。

db.Query()函数用来直接执行Sql返回Rows结果。

stmt.Exec()函数用来执行stmt准备好的SQL语句

可以看到我们传入的参数都是=?对应的数据,这样做的方式可以一定程度上防止SQL注入。

golang操作mysql数据库的更多相关文章

  1. Golang原生sql操作Mysql数据库增删改查

    Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用. 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动 ...

  2. [转帖]golang操作mysql使用总结

    golang操作mysql使用总结 https://www.cnblogs.com/hanyouchun/ 讲解的很详细~ 前言 Golang 提供了database/sql包用于对SQL数据库的访问 ...

  3. Go语言操作MySQL数据库

    Go语言操作MySQL数据库 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用 ...

  4. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  5. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  6. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  7. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  8. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  9. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

随机推荐

  1. css--一些基本属性

    关于css各标签的属性: w3cschool一应俱全 设置固定的图片: body { background-image: url(bgimage.gif); background-attachment ...

  2. Delphi XE7实现的任意位置弹出菜单

    Delphi XE7中目前还没有弹出菜单组件,这个弹出菜单应用很普遍,在JAVA开发的安卓程序中很简单就可以用上了,应该说是一个标准控件.看了一些例子,但是都不能满足我想在任意位置弹出菜单需求,于是自 ...

  3. Nginx+keepalive 负载均衡

    1 规划和准备 两台相同配置的web 用途 IP MASTER 192.168.1.100 BACKUP 192.1681.101 2 安装 两台接入服务器分别安装NginX和keepalived: ...

  4. LOJ#6048. 「雅礼集训 2017 Day10」数列(线段树)

    题面 传送门 题解 我的做法似乎非常复杂啊-- 首先最长上升子序列长度就等于把它反过来再接到前面求一遍,比方说把\(2134\)变成\(43122134\),实际上变化之后的求一个最长上升子序列和方案 ...

  5. Python 用队列实现多线程并发

    # Python queue队列,实现并发,在网站多线程推荐最后也一个例子,比这货简单,但是不够规范 # encoding: utf-8 __author__ = 'yeayee.com' # 由本站 ...

  6. php防止网站被刷新

    在实际应用中,总会遇到某些页面被恶意用户刷新.当你的系统在某些模块没有使用缓存的时候,频繁的刷新会导致数据库吃紧.下面附上一段代码,防止频繁的刷新造成的死机情况. 主要是从 session方面进行限制 ...

  7. [ActionScript 3.0] File下载工具

    更新数据原理,访问接口,将服务器数据抓取并下载到本地的临时文件夹,当所有下载完成,卸载客户端内容,出现升级界面,此时移动下载的内容到目标文件夹,移动完成再重新加载客户端,访问接口,下载文件,移动文件均 ...

  8. verify验证插件的详解

    使用此验证插件,我们只需要新建一个实例对象,同时传入一个json对象就行了,这里我们只传入了两个属性:checkItem和callback.下面的代码解析,我们就按照这个例子来. var verify ...

  9. Windows Server2008如何打开添加IIS服务器

    https://jingyan.baidu.com/article/1612d500aa4594e20e1eeefc.html

  10. Windows下部署安装Docker

    好长时间没用Docker,最近准备部署一下,做个记录,今天早上去官网下载,发现Docker开始区分Docker Community Edition(社区版)和Docker Enterprise Edi ...