`

go语言六——连接mysql

 
阅读更多

转自:Golang连接Mysql

 

首先go-driver-sql的mysql版本,我通过

go get code.google.com/p/go-mysql-driver/mysql

安装失败,貌似是git版本不够新的缘故,不过用不着这么麻烦,直接去github下载源代码即可,解压到/usr/local/go/src/pkg/mysql目录

package main

// 导入sql包, 跟java.sql类似的
import "database/sql"
import _ "mysql"
import "encoding/json"
import "fmt"

// 定义一个结构体, 需要大写开头哦, 字段名也需要大写开头哦, 否则json模块会识别不了
// 结构体成员仅大写开头外界才能访问
type User struct {
    User      string    `json:"user"`
    Password string `json:"password"`
    Host   string `json:"host"`
}

// 一如既往的main方法
func main() {
    // 格式有点怪, @tcp 是指网络协议(难道支持udp?), 然后是域名和端口
    db, e := sql.Open("mysql", "root:pwd@tcp(localhost:3306)/mysql?charset=utf8")
    if e != nil { //如果连接出错,e将不是nil的
        fmt.Println("ERROR?")
        return
    }
    // 提醒一句, 运行到这里, 并不代表数据库连接是完全OK的, 因为发送第一条SQL才会校验密码 汗~!
    _, e2 := db.Query("select 1")//生产环境去掉这句,不然会有内存泄漏
    if e2 == nil {
        fmt.Println("DB OK")
        rows, e := db.Query("select user,password,host from mysql.user")
        if e != nil {
            fmt.Print("query error!!%v\n", e)
            return
        }
        if rows == nil {
            fmt.Println("Rows is nil")
            return
        }
        for rows.Next() { //跟java的ResultSet一样,需要先next读取
            user := new(User)
            // rows貌似只支持Scan方法 继续汗~! 当然,可以通过GetColumns()来得到字段顺序
            row_err := rows.Scan(&user.User,&user.Password, &user.Host)
            if row_err != nil {
                fmt.Println("Row error!!")
                return
            }
            b, _ := json.Marshal(user)
            fmt.Println(string(b)) // 这里没有判断错误, 呵呵, 一般都不会有错吧
        }
        fmt.Println("Done")
    } else {
        fmt.Println(e)
    }
}
分享到:
评论

相关推荐

    Go语言游戏服务器框架【Leaf Server】

    【Go语言游戏服务器框架——Leaf Server深度解析】 Go语言,以其高效的并发模型、简洁的语法以及优秀的内存管理,已经成为构建高性能网络服务的首选语言之一。在游戏开发领域,尤其是服务器端,Go语言的优势更是...

    zinx —— golang —— MMO游戏服务器开发对应客户端

    Zinx利用Golang的goroutine和channel特性,实现高效的并发处理,使得游戏服务器能够轻松应对大量并发连接。同时,其内置的消息处理机制允许开发者自定义消息解析和处理流程,以适应复杂的游戏逻辑。 在MMO游戏...

    基于Go语言的爬虫项目

    首先,我们来关注项目所采用的主要编程语言——Go(Golang)。Go语言是由Google开发的一种静态类型的、编译型的、并发型且具有垃圾回收功能的编程语言。它的设计目的是提高软件的开发效率和运行性能。Go语言以其简洁...

    Go WEB 编程 PDF

    1. **Go语言基础**:Go语言,也称为Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。它具有简洁的语法和强大的工具链,特别适合于网络服务和并发编程。 2. **Web编程基础**:书...

    华农Linux综合性实验代码实现

    在实验的`mysql.py`文件中,我们可以推测这是使用Python连接和操作MySQL数据库的一个示例。Python提供了多种方式来访问数据库,如使用标准库`sqlite3`或第三方库如`pymysql`、`mysql-connector-python`等。实验可能...

    Go-Spaceship-用Golang编写的多人游戏后端框架

    在游戏开发领域,Go语言的这些特性使得它成为构建高性能服务器的理想选择,尤其是在处理大量并发连接的多人在线游戏中。 Go-Spaceship框架的核心设计理念是模块化和可扩展性。它允许开发者轻松地添加新的游戏逻辑,...

    go server 服务器

    Go 语言的特性使其成为构建这类服务器的理想平台,尤其是它的并发模型——goroutines 和 channels,能够高效地处理大量并发连接,而不会造成过多的系统资源消耗。 1. **Go 语言特性**:Go 语言拥有静态类型和编译型...

    Go-Go关系持久化-一个ORM框架

    本篇文章将深入探讨Go语言中的ORM框架——Go-Go关系持久化,以及其核心特性。 Go-Go关系持久化,简称为Gorp,是一个轻量级的ORM库,旨在简化Go语言与关系型数据库之间的交互。它支持多种数据库,如MySQL、...

    8小时转职Goland工程师-生态扩展

    首先,Go语言的包管理器——go modules,是官方提供的依赖管理工具。它使得开发者可以轻松地管理和维护项目中的依赖关系,实现版本控制,确保项目在不同的环境中都能正确编译和运行。通过`go mod init`和`go mod ...

    Xfire案例,webserver——Xfire案例

    3. **服务器编程语言**:Xfire可能使用了各种编程语言来构建其webserver,如C++(因为Xfire客户端就是用C++编写的),或者使用更现代的语言如Python、Java或Go。 4. **数据库集成**:为了存储和检索用户信息、游戏...

    golang实现单点登录系统(go-sso)

    本文将详细介绍一个基于Go语言开发的单点登录系统(go-sso),包括其核心功能、技术栈以及如何部署和使用该系统。 #### 二、核心功能 此单点登录系统实现了以下核心功能: 1. **手机号注册**:用户可以通过输入...

    stayfoo-hub:Go开发笔记,Go思维导图,一些开源库原始代码分析。

    在标签中,我们看到了一系列与Go语言相关的技术,如`mysql`(MySQL数据库操作)、`linux`(Linux系统编程)、`shell`(Shell脚本)、`nginx`(Web服务器)以及`golang try-code`(Go代码实践)。这意味着这份资源...

    后端开发工具

    此外,这款IDE还特别支持Go语言的开发,以及MySQL数据库和Web应用的构建,使得开发者可以一站式地处理多种后端技术栈的需求。 【Go语言支持】 Go,又称Golang,是Google推出的一种静态类型、编译型、并发型且具有...

    一个基于golang的serveless 的低代码平台。可以快速的构建基于微服务和数据库的管理类应用.zip

    平台选择Golang作为主要编程语言,是因为Go语言具备高性能、轻量级、并发能力强等优点,特别适合构建高并发、低延迟的服务。 “快应用开发”意味着该平台简化了传统应用程序的开发流程,通过提供图形化的界面和预...

    毕业设计-基于CocosCreator+TypeScript+Go+WebSocket多人房间匹配你画我猜.zip

    这是一个基于CocosCreator、TypeScript、Go语言以及WebSocket技术实现的多人在线游戏——"你画我猜"的毕业设计项目。这个项目展示了如何利用这些技术构建一个实时互动的游戏平台,其中包括客户端的游戏逻辑实现、...

    go 打造的轻量级 orm; 支持多数据库; 性能接近原生(database/sql)

    本篇文章将深入探讨一个基于Go语言的轻量级ORM库——"spellsql",它支持多数据库,并且性能表现接近原生的`database/sql`包。 首先,"spellsql"是一个为Go语言设计的ORM框架,它的主要目标是提供一种简单、高效的...

    精品--毕业设计,多人房间匹配你画我猜。Cocos Creator + TypeScript + Go + WebS.zip

    【Go】:Go语言(也称为Golang)是一种高性能、简洁的后端编程语言,适合构建网络服务。在本项目中,Go可能被用来开发服务器端,处理WebSocket连接,实现用户注册、登录,以及房间管理和匹配功能。Go的并发模型使得...

    开源项目-flike-kingshard.zip

    Flike Kingshard,作为一个高性能的MySQL代理,凭借其强大的Go语言支持,为数据库的扩展性和性能提升提供了新的解决方案。本文将深入探讨Flike Kingshard的核心特性和应用场景,帮助读者理解如何利用这个开源项目...

    ORM library for golang

    本篇文章介绍了一个专门为Golang设计的ORM库——`zhgo/db`。该库支持多种数据库类型,包括MySQL、MariaDB、PostgreSQL和SQLite3等,并提供了简洁易用的API来执行常见的CRUD(创建、读取、更新、删除)操作。 #### ...

    JAVAWML信息查询与后端信息发布系统实现——WML信息查询设计(源代码+论文).rar

    开发者需要了解如何使用WML标签,如`< decks >`, `< card >`, `< go >`, `< input >`等,来构建简洁、易于操作的查询界面。此外,还要考虑到WAP设备的限制,如屏幕尺寸、输入方式和网络速度,确保用户能流畅地进行...

Global site tag (gtag.js) - Google Analytics