go语言连接数据库的一些方法


```go
package main

import (
	"database/sql"
	"fmt"
	//配置环境MySQL
	_ "github.com/go-sql-driver/mysql"
	"log"
	"math"
)
//在java中是声明类 但是go不是面向对象编程,所以它只是变量
type user struct {
	 Id int
	 Name string
	 Pwd string
	 CreatedAt string
}

//声明sql连接  在java的jdbc远古mysql连接版本中差不太多
var db0 *sql.DB

func main()  {
	//var us user
	//us.select2()

	//var us user
	//us.Name ="张三"
	//us.Pwd ="123"
	//us.CreatedAt ="321"
	//us.insert()

	//var us user
	//us.Id =7
	//us.Name="李四"
	//us.Pwd="111"
	//us.CreatedAt="222"
	//us.update()

//掉方法必须是闲声明 而且声明类似于变量
	var us user
	us.Id =6
	us.del()
}


	/**
	删除操作
	 */
func (user user) del() {
	var err error
	db0, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/golang?charset=utf8")
	if err != nil {
		log.Fatal("数据库打开出现了问题:", err)
		return
	}
	db0.Ping()
	if err != nil {
		log.Fatal("数据库连接出现了问题:", err)
		return
	}
	rows, err := db0.Prepare("DELETE FROM user where id =?")
	res, err := rows.Exec(user.Id)
	if err !=nil{
		fmt.Println("出错了",res)
		return
	}
}


	/**
	修改数据操作
	 */
func (user user) update() {
	var err error
	db0, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1.155:3306)/golang?charset=utf8")
	if err != nil {
		log.Fatal("数据库打开出现了问题:", err)
		return
	}
	db0.Ping()
	if err != nil {
		log.Fatal("数据库连接出现了问题:", err)
		return
	}
	rows, err := db0.Prepare("UPDATE `user` SET `name` = ?, `pwd` = ?, `created_at` = ? WHERE `id` = ?")
	res, err := rows.Exec(user.Name,user.Pwd,user.CreatedAt,user.Id)
	if err !=nil{
		fmt.Println("出错了",res)
		return
	}
}
	/**
	insert 插入
	 */
func (user user) insert (){
	var err error
	db0, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/golang?charset=utf8")
	if err != nil {
		log.Fatal("数据库打开出现了问题:", err)
		return
	}
	db0.Ping()
	if err != nil {
		log.Fatal("数据库连接出现了问题:", err)
		return
	}

	rows, err := db0.Prepare("INSERT INTO `user` ( `name`, `pwd`, `created_at`) VALUES (?, ?, ?) ")
	res, err := rows.Exec(user.Name,user.Pwd,user.CreatedAt)
	if err !=nil{
		fmt.Println("出错了",res)
		return
	}
}

		/**
		查询使用实体类
		 */
func (user user) select2() {
	var err error
	db0, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/golang?charset=utf8")
	if err != nil {
		log.Fatal("数据库打开出现了问题:", err)
		return
	}
	db0.Ping()
	if err != nil {
		log.Fatal("数据库连接出现了问题:", err)
		return
	}

	rows, err := db0.Query("select id, name, pwd, created_at from user")
	//rows, err := db0.Query(sqlStr)
	if err !=nil{
		fmt.Println("出错了",err)
		return
	}
	//defer rows.Close()

	for rows.Next(){

		err = rows.Scan(&user.Id,&user.Name,&user.Pwd,&user.CreatedAt)
		checkErr(err)
		fmt.Println(user.Id)
		fmt.Println(user.Name)
		fmt.Println(user.Pwd)
		fmt.Println(user.CreatedAt)
	}

}

	/**
	查询不使用实体类
	 */
func queryMultiRowDemo() {
	var err error
	db0, err := sql.Open("mysql", "root:12345678@tcp(127.0.0.1:3306)/golang?charset=utf8")
	if err != nil {
		log.Fatal("数据库打开出现了问题:", err)
		return
	}
	db0.Ping()
	if err != nil {
		log.Fatal("数据库连接出现了问题:", err)
		return
	}

	rows, err := db0.Query("select id, name, pwd, created_at from user")
	//rows, err := db0.Query(sqlStr)
	if err !=nil{
		fmt.Println("出错了",err)
		return
	}
	//defer rows.Close()

	for rows.Next(){
		var id int
		var name string
		var pwd string
		var createdat string
		err = rows.Scan(&id,&name,&pwd,&createdat)
		checkErr(err)
		fmt.Println(id)
		fmt.Println(name)
		fmt.Println(pwd)
		fmt.Println(createdat)
	}

}
	/**
	报错信息
	 */
func checkErr(err error) {
	if err != nil {
		panic(err)
	}
}

你可能感兴趣的:(golang,数据库,mysql)