Go语言中查询SqlServer数据库

一、Go语言中查询MsSQL数据库:

  

// main.go
package main

import (
    "database/sql"
    "fmt"
    "log"
    "time"

    _ "github.com/denisenkom/go-mssqldb"
)

func main() {
    var isdebug = true
    var server = "localhost"
    var port = 1433
    var user = "sa"
    var password = "123456xx"
    var database = "MyTestDB"

    //连接字符串
    connString := fmt.Sprintf("server=%s;port%d;database=%s;user id=%s;password=%s", server, port, database, user, password)
    if isdebug {
        fmt.Println(connString)
    }
    //建立连接
    conn, err := sql.Open("mssql", connString)
    if err != nil {
        log.Fatal("Open Connection failed:", err.Error())
    }
    defer conn.Close()

    //产生查询语句的Statement
    stmt, err := conn.Prepare(`select * from [account_region]`)
    if err != nil {
        log.Fatal("Prepare failed:", err.Error())
    }
    defer stmt.Close()

    //通过Statement执行查询
    rows, err := stmt.Query()
    if err != nil {
        log.Fatal("Query failed:", err.Error())
    }

    //建立一个列数组
    cols, err := rows.Columns()
    var colsdata = make([]interface{}, len(cols))
    for i := 0; i < len(cols); i++ {
        colsdata[i] = new(interface{})
        fmt.Print(cols[i])
        fmt.Print("\t")
    }
    fmt.Println()

    //遍历每一行
    for rows.Next() {
        rows.Scan(colsdata...) //将查到的数据写入到这行中
        PrintRow(colsdata)     //打印此行
    }
    defer rows.Close()
}

//打印一行记录,传入一个行的所有列信息
func PrintRow(colsdata []interface{}) {
    for _, val := range colsdata {
        switch v := (*(val.(*interface{}))).(type) {
        case nil:
            fmt.Print("NULL")
        case bool:
            if v {
                fmt.Print("True")
            } else {
                fmt.Print("False")
            }
        case []byte:
            fmt.Print(string(v))
        case time.Time:
            fmt.Print(v.Format("2016-01-02 15:05:05.999"))
        default:
            fmt.Print(v)
        }
        fmt.Print("\t")
    }
    fmt.Println()
}

二、效果:

  

server=localhost;port1433;database=MyTestDB;user id=sa;password=123456xx
region_id    provider_id    region_name    billing_region_name    description
1    5    us-east-1    US-EAST    AWS US EAST Data Center
2    5    us-west-2    US_WEST_OREGON    AWS Oregon Data Center
3    5    ap-southeast-1    ASIA_SIGN    AWS Singapore Data Center
4    5    ap-southeast-2    ASIA_SYDENY    AWS Sydney Data Center
5    5    ap-northeast-1    ASIA_TOKYO    AWS Tokyo Data Center
6    5    eu-central-1    EU_FRANKFURT    AWS Frankfurt Data Center
7    5    eu-west-1    EU_IRELAND    AWS Europe Data Center
8    5    us-west-1    US_WEST_CA    AWS CA Data Center
9    5    sa-east-1    SOUA_SAOP    AWS Sao Paulo Data Center
10    5    ap-northeast-2    ASIA_SEOUL    AWS Seoul Data Center
11    5    ap-south-1    ASIA_MUMBAI    AWS Mumbai Data Center
12    2    Central US    US-CENTRAL    Azure Center US Data Center
13    2    North Central US    US-NORTH-CENTRAL    Azure North US Data Center
14    2    East US    US-EAST    Azure East US Data Center
15    2    South Central US    US-SOUTH-CENTRAL    Azure South US Data Center
16    2    West US    US-WEST    Azure West US Data Center
17    2    North Europe    EUROPE-NORTH    Azure North Europe Data Center
18    2    West Europe    EUROPE-WEST    Azure North Europe Data Center
19    2    East Asia    ASIA-PACIFIC-EAST    Azure East Aisa Data Center
20    2    Southeast Asia    ASIA-PACIFIC-SOUTHEAST    Azure Singapore Data Center
21    2    Japan East    JAPAN-EAST    Azure East Japan Data Center
22    2    Japan West    JAPAN-WEST    Azure West Japan Data Center
23    2    Brazil South    BRAZIL-SOUTH    Azure Sao Paulo Data Center
24    2    Australia East    AUSTRALIA-EAST    Azure East Australia Data Center
25    2    Australia Southeast    AUSTRALIA-SOUTHEAST    Azure Southeast Australia Data Center
26    2    East US 2    US-EAST-2    Azure East US Data Center 2
27    2    US Gov Virginia    USGOV-VIRGINIA    Azure US Virginia Government Data Center
28    2    US Gov Iowa    USGOV-IOWA    Azure US Iowa Government Data Center
29    2    Canada Central    CANADA-CENTRAL    Azure Central Canada
30    2    Canada East    CANADA-EAST    Azure East Canada
31    2    Germany Central    GERMANY-CENTRAL    Azure Central Germany
32    2    Germany Northeast    GERMANY-NORTHEAST    Azure Northeast Germany
33    2    Korea Central    KOREA-CENTRAL    Azure Central Korea
34    3    China North    CN-BEIJING    Azure Mooncake Beijing Data Center
35    3    China East    CN-SHANGHAI    Azure Mooncake Shanghai Data Center
36    4    cn-hangzhou    CN_HANGZHOU    Aliyun Hangzhou Data Center
37    4    cn-beijing    CN_BEIJING    Aliyun Beijing Data Center
38    4    cn-shenzhen    CN_SHENZHEN    Aliyun Shenzhen Data Center
39    4    cn-qingdao    CN_QINGDAO    Aliyun Qingdao Data Center
40    4    cn-hongkong    HONGKONG    Aliyun Hong Kong Data Center
41    4    us-silicon-valley    US-Silicon_Valley    Aliyun Silicon Valley Data Center    

三、使用实体实现的方法:

// main.go
package main

import (
    "database/sql"
    "fmt"
    "log"

    _ "github.com/denisenkom/go-mssqldb"
)

type AccessRegion struct {
    region_id           int64
    provider_id         int64
    region_name         string
    sub_region_names    string
    billing_region_name string
    description         string
}

func main() {
    var server = "localhost"
    var port = 1433
    var user = "sa"
    var password = "123456xxx"
    var database = "MyTestDB"

    //连接字符串
    connString := fmt.Sprintf("server=%s;port%d;database=%s;user id=%s;password=%s", server, port, database, user, password)

    //建立连接
    db, err := sql.Open("mssql", connString)
    if err != nil {
        log.Fatal("Open Connection failed:", err.Error())
    }
    defer db.Close()

    //通过连接对象执行查询
    rows, err := db.Query(`select * from [account_region]`)
    if err != nil {
        log.Fatal("Query failed:", err.Error())
    }
    defer rows.Close()

    var rowsData []*AccessRegion
    //遍历每一行
    for rows.Next() {
        var row = new(AccessRegion)
        rows.Scan(&row.region_id, &row.provider_id, &row.region_name, &row.billing_region_name, &row.description)
        rowsData = append(rowsData, row)
    }

    //打印数组
    for _, ar := range rowsData {
        fmt.Print(ar.region_id, "\t", ar.provider_id, "\t", ar.region_name, "\t", ar.billing_region_name, "\t", ar.description)
        fmt.Println()
    }
}
时间: 2024-10-08 13:10:52

Go语言中查询SqlServer数据库的相关文章

Go语言中使用MySql数据库

Go语言中使用MySql数据库 1.MySQL驱动 Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种: https://github.com/Go-SQL-Driver/MySQL 支持database/sql,全部采用go写. https://github.com/ziutek/mymysql 支持database/sql,也支持自定义的接口,全部采用go写. https://github.com/Phil

Go语言中使用SQLite数据库

Go语言中使用SQLite数据库 1.驱动 Go支持sqlite的驱动也比较多,但是好多都是不支持database/sql接口的 https://github.com/mattn/go-sqlite3 支持database/sql接口,基于cgo(关于cgo的知识请参看官方文档或者本书后面的章节)写的 https://github.com/feyeleanor/gosqlite3 不支持database/sql接口,基于cgo写的 https://github.com/phf/go-sqlite

js中访问SqlServer数据库

1 <script language="JavaScript"> 2 // 创建数据库对象 3 var objdbConn = new ActiveXObject("ADODB.Connection"); 4 // DSN字符串 5 var strdsn = "Driver={SQL Server};SERVER=127.0.0.1;UID=sa;PWD=sa;DATABASE=coa"; 6 // 打开数据源 7 objdbConn

查询sqlserver数据库视图、存储过程等包含特定的字符串

? 1 2 3 4 5 6 SELECT  A.name ,         B.definition FROM    SYS.objects A         INNER JOIN sys.sql_modules B ON A.object_id = B.object_id                                         AND ( CHARINDEX('包含字符',                                               

在Oracle数据库中实现SqlServer数据库中的NewID()函数功能

因为我是使用.NET C#进行开发,所以平时会使用SqlServer的NewID()函数来生成数据的ID. 在C#语言中也可以很方便地使用Guid.NewGuid().ToString()方法来生成格式一样的ID. 现在数据库换成了Oracle,没有类似的函数可以方便地调用,但是Oracle中自带一个函数SYS_GUID(). 返回的是一串二进制的数据,可以通过CAST转换成VARCHAR类型后就是类似SqlServer中NewID()方法生成的ID的样子了. 我们只要再做下手脚,往里面插入几个

MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句

查询所有数据库占用磁盘空间大小的SQL语句: select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size, concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size from information_schema.tables group by TABLE_SCHEMA order by data_lengt

WindowsServer --------- 在服务器中安装sqlserver 数据库

数据库文件可能比较大可以通过盘符映射来进行传递,就是时间比较慢 方法,上一片就是介绍如何进行传递    点击这个连接 安装sqlserver 2014 数据库 要是没有密钥可以试试这个 一般  .Net 项目都是使用sqlServer 数据库,,基本上都是默认点就行 注意:2014可以不用默认就行 给sa设定一个密码用于软件与数据库进行连接 注意密码要记录下来   因为需要设计的比较复杂 添加当前用户就行 按照你的需求进行选择就行也可以直接点击下一步 添加当前用户  ,点击下一步就行 起个名字就

查询Sqlserver数据库死锁的一个存储过程

使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁, 死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉.利用sp_who_lock这个存储过程,可以很方便的知道哪个进程出现了死锁,出现死锁的问题在哪里. 创建sp_who_lock存储过程 CREATE procedure sp_who_lock   as      begin         declare @spid int         declare @blk in

AX 中通过SqlServer数据库刷数据

AX 中通过数据库刷csv,或者Excel格式数据.以下以CSV格式的数据为例 1.首先打开 SQL Server 数据库,登陆进入后,选中要导入的数据库右击,然后在右击菜单中点击任务下的导入数据. 2. 进入到导入数据库的向导,继续下一步 3.选择要导入的数据文件后,继续下一步 4.选择目标数据源数据库后,继续下一步 5.预览要导入的数据无误后,继续下一步 6.继续下一步,点击完成,开始生成中间表数据 7.插入成功后,可以看到如下界面提示 生成结束 8.导入成功后,可以去数据库查看下新生成的数