Sql server 尝试在Go中使用包时出错-需要帮助修复吗

Sql server 尝试在Go中使用包时出错-需要帮助修复吗,sql-server,macos,odbc,go,Sql Server,Macos,Odbc,Go,首先,我是新手 我决定创建一个Go版本的一些.NET服务,这些服务是我们作为爱好项目开发的。尝试这样做的原因有: 我对围棋的语言有些好奇 我认为.NET Web服务可以改进很多,但我不是我们公司的.NET开发人员 现在为了创建这些Web服务,我需要访问我们的数据库。我将测试服务器配置为允许使用ODBC访问数据库 下一步:让ODBC连接在Go应用程序中工作。有几个Go ODBC包可用,目前我正在尝试使用这个包: 项目中包括的就是一个例子。当我尝试运行该示例时,会收到以下错误消息: MacBoo

首先,我是新手

我决定创建一个Go版本的一些.NET服务,这些服务是我们作为爱好项目开发的。尝试这样做的原因有:

  • 我对围棋的语言有些好奇
  • 我认为.NET Web服务可以改进很多,但我不是我们公司的.NET开发人员
现在为了创建这些Web服务,我需要访问我们的数据库。我将测试服务器配置为允许使用ODBC访问数据库

下一步:让ODBC连接在Go应用程序中工作。有几个Go ODBC包可用,目前我正在尝试使用这个包:

项目中包括的就是一个例子。当我尝试运行该示例时,会收到以下错误消息:

MacBook-Air:go wolf$ go run example.go 
# godbc
godbc.go:77:2: expected declaration, found '('
godbc.go:81:2: expected declaration, found 'IDENT' x
godbc.go:104:2: expected declaration, found 'IDENT' dsn
godbc.go:109:2: expected declaration, found 'IDENT' returnInt
godbc.go:132:2: expected declaration, found 'IDENT' driver
godbc.go:137:2: expected declaration, found 'IDENT' returnInt
godbc.go:161:2: expected declaration, found 'IDENT' outConnectionString
godbc.go:185:2: expected declaration, found 'IDENT' messageText
godbc.go:188:2: expected declaration, found 'IDENT' returnInt
godbc.go:212:2: expected declaration, found 'IDENT' returnInt
godbc.go:230:2: expected declaration, found 'IDENT' returnInt
godbc.go:242:2: expected declaration, found 'IDENT' returnInt
godbc.go:275:2: expected declaration, found 'IDENT' returnInt
godbc.go:291:2: expected declaration, found 'IDENT' buffer
godbc.go:336:2: expected declaration, found 'for'
现在我不知道如何处理这个错误。我认为错误可能与文件的格式有关,但可能还有其他原因。当我查看github页面上的“问题”选项卡时,我注意到其他人提到了相同的问题,但注意到代码没有使用最新版本的Go进行编译,因此我假设它在过去编译过


有人知道这个问题是否有简单的解决方法,或者我应该试试其他ODBC包吗?如果是这样的话:会推荐什么方案

看起来这段代码是在Go拥有自动分号插入规则之前编写的,即使是gofix现在也不会碰到这样的代码。我对ODBC了解不多,但我认为使用不同的软件包会更好。

看起来该代码是在Go使用自动分号插入规则之前编写的,即使是gofix现在也不会使用这种代码。我对ODBC了解不多,但我认为使用另一个包会更好。

是一个非常旧的包。正如您所发现的,它甚至不再编译

Go现在有了database/sql标准包,可以访问任何sql数据库。它提供了接口,但您还需要一个“驱动程序包”,它将实现对所选数据库的访问。这种设计的思想是,您可以替换“驱动程序包”来访问不同的数据库。大部分(如果不是全部的话)用户代码都不应该更改

除非您需要一些特定于ODBC的功能,否则应该尝试使用database/sql包。这将允许您尝试不同的驱动程序,直到找到适合您的驱动程序

我自己编写了ODBC驱动程序。我使用它访问MS SQL Server。也许,它会对你有用

亚历克斯是个很老的人。正如您所发现的,它甚至不再编译

Go现在有了database/sql标准包,可以访问任何sql数据库。它提供了接口,但您还需要一个“驱动程序包”,它将实现对所选数据库的访问。这种设计的思想是,您可以替换“驱动程序包”来访问不同的数据库。大部分(如果不是全部的话)用户代码都不应该更改

除非您需要一些特定于ODBC的功能,否则应该尝试使用database/sql包。这将允许您尝试不同的驱动程序,直到找到适合您的驱动程序

我自己编写了ODBC驱动程序。我使用它访问MS SQL Server。也许,它会对你有用


Alex

大多数使用Go with Microsoft SQL Server的人似乎都在使用驱动程序包
github.com/denisenkom/Go MSSQLSDB
以及标准的
数据库/SQL

我的回答可能会帮助您或其他任何人,其中包括我为使演示程序正常工作所经历的一些细节。我必须对SQL Server配置进行几次更改

 - enable SQL Server Authentication as well as Windows Authentication
 - enable TCP connections
 - create SQL Server user and assign necessary permissions

该示例适用于作为默认实例安装在本地计算机上的SQL Server。

大多数使用Go with Microsoft SQL Server的人似乎都在使用驱动程序包
github.com/denisenkom/Go MSSQLSDB
以及标准的
数据库/SQL

我的回答可能会帮助您或其他任何人,其中包括我为使演示程序正常工作所经历的一些细节。我必须对SQL Server配置进行几次更改

 - enable SQL Server Authentication as well as Windows Authentication
 - enable TCP connections
 - create SQL Server user and assign necessary permissions

该示例适用于作为默认实例安装在本地计算机上的SQL Server。

在Go中连接到数据库时,应仅选择与数据库/SQL兼容的软件包。以下是一些信息:,当连接到Go中的数据库时,您应该只选择与数据库/sql兼容的包。这里有一些信息:,我试着使用你的软件包(以及其他几个),但苹果可能会使用所有这些软件包所期望的不同版本的SQL/ODBC C类。Apple已弃用了其标题中的许多功能,因此Go编译和运行失败并出现警告(例如
unix.Go:17:warning:“SQLFreeHandle”已弃用(声明为/usr/include/sql.h:942)
)。我曾尝试禁用编译警告(使用
%go build-compiler gccgo-gccgoflags='-Wdeprecated'-x
),但这不起作用,无法让编译器为Apple类使用编译器标志。我没有尝试使用我的包darwin-我在windows和linux上使用它。我的包不会构建在darwin上,因为unix相关文件只有“+BuildLinux”。如果有帮助的话,您可以尝试在其中添加“darwin”来查看。我也不明白您在我的软件包中从哪里找到了unix.go。另外,我使用的是标准的Go gc编译器,而不是gccgo。至于你得到的警告,我会暂时忽略它。好吧,那是在另一个项目中,但有一些相同的警告。不管怎样,我最近确实从项目网站下载了iODBC类,显然它们安装在不同的位置(
/usr/local/iODBC/include
)。这些类应该像预期的那样工作,但是我想我必须让编译器“知道”这些类是否工作,也许是通过添加