创建参数为字节数组的查询

时间:2018-12-06 23:05:08

标签: sql database sqlite go sqlx

在将查询的字节数组与SqlX一起发送时遇到问题。

我将举一个具体的例子,考虑以下几点:

我有这些哈希值:

hash1 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")
hash2 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")
hash3 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")
hash4 := []byte("84ce419844366f84de5352c257f06e356fe1ee4c4248e774c66cd44a7cf24c84f6492e988287db9fc3e540dac4efbd4813ce6f82afa9f552b1f5d46376dcac30")

这样存储:

hashes := [][]byte{}

hashes = append(txsHashes, txHash1)
hashes = append(txsHashes, txHash2)
hashes = append(txsHashes, txHash3)
hashes = append(txsHashes, txHash4)

现在,我要删除其哈希在哈希数组中的所有行。

查询:

    query := "DELETE SomeTable WHERE hash IN (?)"

我正在创建数据库连接:

db  :=  &sqlx.DB{}
sqlDriverStr := "sqlite3"
dataSourcePath := "./mock.db"
sqlDriver, err := sql.Open(sqlDriverStr, dataSourcePath)
if err != nil {
    log.Fatal(err)
}

db = sqlx.NewDb(sqlDriver, sqlDriverStr)
err = db.Ping()
if err != nil {
    log.Fatal(err)
}

执行查询:

deleteQuery := "DELETE SomeTable WHERE hash IN (?)"
_, err = db.Exec(deleteQuery, txsHashes)
if err != nil {
    log.Fatal(err)
}

我回来了一个错误:

  

2018/12/07 00:57:59 sql:转换参数$ 1类型:不支持的类型[] [] uint8,切片的一部分

任何想法我该怎么办?

谢谢

0 个答案:

没有答案