Я использую библиотеку и драйвер github.com/denisenkom/go-mssqldb, но получаю сообщение об ошибке sql: expected 0 arguments, got 3 exit status 1 при вставке новой строки.

tsql := "INSERT INTO Uploads (Fname, Fsize, Ftype) VALUES (@Fname, @Fsize, @Ftype );"
fmt.Printf("tsql = %s\n", tsql)

//Execute non-query with named parameters
res, err := db.ExecContext(
    ctx,
    tsql,
    sql.Named("Fname", fname),
    sql.Named("Fsize", fsize),
    sql.Named("Ftype", ftype))

if err != nil {
    log.Fatal(" AddRow_v1() -> Error creating new row: " + err.Error())
    return -1, err
}
1
Nathan DevX 27 Ноя 2021 в 11:31
1
В этом случае вы должны называть dB.QueryContext, а не dB.ExecContext.
 – 
Jens
27 Ноя 2021 в 11:37

1 ответ

Лучший ответ

Эта проблема может быть связана с именем драйвера, используемым в строке подключения. Я пробовал такой же запрос с вашим, запись создается без ошибок.

Я считаю, что в настоящее время вы используете mssql в строке подключения; sql.Open ("mssql", conn) (Эта проблема уже обсуждалась в https://github.com/denisenkom/go-mssqldb/issues/594#issuecomment-809922317)

Если вы попробуете еще раз, заменив «mssql» на «sqlserver», проблема должна быть решена.

1
sigkilled 27 Ноя 2021 в 14:01