我的第一个代码是
package main
import (
"fmt"
)
type BA_Client struct {
ClientId int `json:ClientId;"`
CompanyName string `json:CompanyName;"`
CreateDate string `json:CreateDate;"`
}
func main() {
conn, _ := getConnection() // Det database connection
query := `select * from IMBookingApp.dbo.BA_Client
ORDER BY
ClientId ASC
OFFSET 56 ROWS
FETCH NEXT 10 ROWS ONLY ;`
var p []byte
err := conn.QueryRow(query).Scan(&p)
if err != nil {
fmt.Println("Error1", err)
}
fmt.Println("Data:", p)
var m BA_Client
err = json.Unmarshal(p, &m)
if err != nil {
fmt.Println("Error2", err)
}
}
我的第二个代码是
conn, _ := getConnection()
query := `select * from IMBookingApp.dbo.BA_Client__c
ORDER BY
ClientId__c ASC
OFFSET 56 ROWS
FETCH NEXT 10 ROWS ONLY ;`
rows, err := conn.Query(query)
if err != nil {
fmt.Println("Error:")
log.Fatal(err)
}
println("rows", rows)
defer rows.Close()
columns, err := rows.Columns()
fmt.Println("columns", columns)
if err != nil {
panic(err)
}
for rows.Next() {
receiver := make([]*string, len(columns))
err := rows.Scan(&receiver )
if err != nil {
fmt.Println("Error reading rows: " + err.Error())
}
fmt.Println("Data:", p)
fmt.Println("receiver", receiver)
}
使用这两个代码,我得到如下相同的错误
sql: expected 3 destination arguments in Scan, not 1
可能是因为我使用的是SQL Server,而不是MySQL?感谢是否有人可以帮助我找到问题。
当您要使用输入切片进行行扫描时,请使用可变的3点表示法...
将切片转换为单独的参数,如下所示:
err := rows.Scan(receiver...)
使用可变参数的您的列(在本例中为三列)将有效地扩展为:
// len(receiver) == 3
err := rows.Scan(receiver[0], receiver[1], receiver[2])
编辑 :
SQL Scan方法的参数值必须为类型interface{}
。因此,我们需要一个中间片。例如:
is := make([]interface{}, len(receiver))
for i := range is {
is[i] = receiver[i]
// each is[i] will be of type interface{} - compatible with Scan()
// using the underlying concrete `*string` values from `receiver`
}
// ...
err := rows.Scan(is...)
// `receiver` will contain the actual `*string` typed items
问题内容: 我正在使用db.QueryRow获取数据。使用Postgresql创建的数据类型为jsonb的表。下面是golang中的代码 panic:sql:在Scan中应该有1个目标参数,而不是3。按行。Scan可以传递n个目标参数。此代码有什么问题? 问题答案: 查询每行返回一个字段。该代码正在扫描三个。也许您想要这样的东西: 另外,将指针传递给值: 另一个选择是将数据作为单个字段获取,并使用
问题内容: 以下方法中的三个点是什么意思? 问题答案: 这意味着可以将零个或多个String对象(或它们的数组)作为该方法的参数传递。 请参见此处的“任意数量的参数”部分:http : //java.sun.com/docs/books/tutorial/java/javaOO/arguments.html#varargs 在你的示例中,可以将其称为以下任意一种: 重要说明:以这种方式传递的参数始
问题内容: 我是Go语言的初学者。我可能认为多年以来其他语言都太传统了,但这就是我想在Go中做的事情。假设以下用例 我有接口I。此接口具有功能start()和stop() 有许多实现接口的结构。结构A,结构B,结构C 当应用程序启动时,我想在结构A,B和C上调用start() 同样,当应用程序终止时,我想在A,B,C结构上调用stop()。 我不想在代码中的任何地方硬编码结构A,B和C来调用启动/
问题内容: 我的PC上没有太多内存,处理器也很弱。尽管到目前为止,netbeans是我最喜欢的IDE,但在我现有的计算机上使用它几乎是难以忍受的,因为打开程序时,项目扫描会自动开始。 有没有办法防止Netbeans扫描项目? 问题答案: 嗨,乔治,我不知道这是否是答案,但是我右键单击并在不需要打开的项目上选择“关闭”。将您过去的所有项目都列出在那里是没有意义的。只需将您正在开发的那个打开。您始终可
我已经复制了一个web应用程序从springool网站,即表单验证应用程序。我有pom和源文件完全一样,他们有它,但当试图运行应用程序我得到以下错误: 这真让人讨厌。我认为这与服务器的设置有关,包括tomcat、pivotal tc或VMWare vFabric,因为如果我尝试在这些服务器上运行它,会产生完全不同的错误。这是一个springboot应用程序,只想在chrome这样的浏览器中运行它。
在android Studio的外部存储中有没有扫描qrcode文件?