亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sql statements.exec 錯誤:mssql:“?”附近的語法不正確

sql statements.exec 錯誤:mssql:“?”附近的語法不正確

Go
慕容3067478 2023-08-07 15:00:28
我需要幫助理解這個錯誤。該代碼適用于 sqlite??雌饋?sql 包甚至沒有在那里放置值,而是按原樣發送問號。我可以毫無問題地運行其他選擇語句,因此這不是連接問題或類似問題。錯誤:“?”附近的語法不正確func TestSQLServerInsert(t *testing.T) {    db, err := sql.Open("sqlserver", "my_trusted_string")    //db, err := sql.Open("sqlite3", "../data/utm_info.db")    if err != nil {        t.Errorf("could not open database: %v", err)    }    defer db.Close()    c := controller.NewC(db)    u := controller.UtilizationResponse{        Snapshot: []int{46, 22, 4, 4, 5, 3, 0, 8, 49},        History:  []float32{55.1, 47.2, 0.3, 33.4, 23.5},        Time:     time.Now(),    }    affectedRows, err := c.InsertUtil(u)    if err != nil {        t.Errorf("could not insert into db: %v", err)    }    var count int64 = 1    assert.Equal(t, affectedRows, count)}// InsertUtil response inserts a new record into the databasefunc (c *Controller) InsertUtil(u UtilizationResponse) (rowsAffected int64, err error) {    return insertUtil(c.DB, u)}func insertUtil(db *sql.DB, u UtilizationResponse) (int64, error) {    stmt, err := db.Prepare("INSERT INTO Utilization VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")    if err != nil {        return 0, err    }    res, err := stmt.Exec(        u.Time,        u.Snapshot[0],        u.Snapshot[1],        u.Snapshot[2],        u.Snapshot[3],        u.Snapshot[4],        u.Snapshot[5],        u.Snapshot[6],        u.Snapshot[7],        u.Snapshot[8],        u.History[0],        u.History[1],        u.History[2],        u.History[3],        u.History[4],    )    if err != nil {        return 0, err    }    rowCnt, err := res.RowsAffected()    if err != nil {        return 0, err    }    return rowCnt, nil}type UtilizationResponse struct {    Snapshot []int     `json:"snapshot,omitempty"`    History  []float32 `json:"history,omitempty"`    Time     time.Time `json:"time,omitempty"`}
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

sqlserver驅動程序使用正常的 MS SQL Server 語法,并期望 sql 查詢中的參數采用 @Name 或 @p1 到 @pN(序數位置)的形式。

insertSql?:=?"insert?into?test?(id,?idstr)?values?(@p1,?@p2)"

經過一些測試,我可以確認它有效。它甚至可以與 sqlite3 一起使用,因此這似乎是一種更廣泛接受的方式。


查看完整回答
反對 回復 2023-08-07
  • 1 回答
  • 0 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號