dongshen5115 2014-06-24 01:59
浏览 52
已采纳

如何设置项目以使用odbc和mssql驱动程序?

I'm trying to use the odbc driver and I'm getting errors:

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

I tried to work with another driver: go get github.com/denisenkom/go-mssqldb but ran unto the same type of problem.
That's why I suspect I didn't set up the environment right but unable to find the issue.


My environment:

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

I installed odbc using go get code.google.com/p/odbc
Ran test and it finished fine:
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

My Code: (copied from 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  
    ......  
  • 写回答

1条回答 默认 最新

  • dpvv37755 2014-06-24 02:18
    关注
    .\main.go:5: imported and not used: "code.google.com/p/odbc/api"  
    .\main.go:72: undefined: Driver  
    .\main.go:76: undefined: Driver
    

    Delete import

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

    Add import

        "code.google.com/p/odbc" 
    

    Replace *Driver with *odbc.Driver. For example,

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

    and

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

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

    Change import to

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

    For example,

    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

    To import a package solely for its side-effects (initialization), use the blank identifier as explicit package name:

    import _ "lib/math"
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解