【问题标题】:How to setup project to work with odbc and mssql drivers?如何设置项目以使用 odbc 和 mssql 驱动程序?
【发布时间】:2014-06-24 16:10:11
【问题描述】:

我正在尝试使用 odbc 驱动程序,但出现错误:

.\main.go:5: imported and not used: "code.google.com/p/odbc/api"  
.\main.go:72: undefined: Driver  
.\main.go:76: undefined: Driver

我尝试使用另一个驱动程序:go get github.com/denisenkom/go-mssqldb,但遇到了相同类型的问题。
这就是为什么我怀疑我没有设置正确的环境但无法找到问题。


我的环境:

set GOARCH=amd64
set GOBIN=
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Go\Projects 
set GORACE=
set GOROOT=C:\Go 
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set TERM=dumb
set CC=gcc
set GOGCCFLAGS=-g -O2 -m64 -mthreads
set CXX=g++
set CGO_ENABLED=1

我使用go get code.google.com/p/odbc安装了odbc
跑了测试,结果很好:
C:\Go\Projects\src\code.google.com\p\odbc>go test -mssrv=.\sqlexp -v -run=MS ... --- PASS: TestMSSQLUTF16ToUTF8 (0.00 seconds) === RUN TestMSSQLExecStoredProcedure --- PASS: TestMSSQLExecStoredProcedure (0.01 seconds) PASS ok code.google.com/p/odbc 0.574s

我的代码: (复制自 mssql_test.go):

package main  
import (  
    "code.google.com/p/odbc/api"  
    "database/sql"       
    "flag"  
    "fmt"  
    "os"  
    "runtime"      
    "testing"  
    "time"  
)  

func mssqlConnect() (db *sql.DB, stmtCount int, err error) {  
    .........  
    return db, db.Driver().(*Driver).Stats.StmtCount, nil  
}  
func closeDB(t *testing.T, db *sql.DB, shouldStmtCount, ignoreIfStmtCount int) {  
    s := db.Driver().(*Driver).Stats  
    ......  

【问题讨论】:

    标签: sql-server go odbc package


    【解决方案1】:
    .\main.go:5: imported and not used: "code.google.com/p/odbc/api"  
    .\main.go:72: undefined: Driver  
    .\main.go:76: undefined: Driver
    

    删除import

        "code.google.com/p/odbc/api"
    

    添加import

        "code.google.com/p/odbc" 
    

    *Driver 替换为*odbc.Driver。例如,

        return db, db.Driver().(*odbc.Driver).Stats.StmtCount, nil
    

        s := db.Driver().(*odbc.Driver).Stats
    

    ./main.go:5: imported and not used: "github.com/denisenkom/go-mssqldb" as mssql
    

    import更改为

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

    例如,

    package main
    
    import (
        "database/sql"
        _ "github.com/denisenkom/go-mssqldb"
    )
    
    func main() {
        conn, err := sql.Open("mssql", makeConnStr())
    }
    

    The Go Programming Language Specification

    Import declarations

    要仅为其副作用(初始化)导入包,请使用 空白标识符作为显式包名称:

    import _ "lib/math"
    

    【讨论】:

    • 我花了 2 天时间研究这个问题。谢谢。
    • 关于 go-mssql 包“github.com/denisenkom/go-mssqldb”的另一个问题。我得到一个错误:“imported and not used: "github.com/denisenkom/go-mssqldb" as mssql" 通过运行代码:package main import("github.com/denisenkom/go-mssqldb ") conn, err := sql.Open("mssql", makeConnStr())
    • @PaulS.:查看我修改后的答案。
    • Google 不知道此类错误。我已经学习围棋大约一个星期了。缺乏好的例子和一般信息令人印象深刻。谢谢您的帮助。保罗。
    猜你喜欢
    • 1970-01-01
    • 2016-04-01
    • 2020-11-25
    • 2014-08-14
    • 2015-03-24
    • 1970-01-01
    • 2014-02-21
    • 2012-12-05
    • 2010-12-01
    相关资源
    最近更新 更多