本文整理汇总了Golang中database/sql/driver.Stmt类的典型用法代码### 示例。如果您正苦于以下问题:Golang Stmt类的具体用法?Golang Stmt怎么用?Golang Stmt使用的例子?那么恭喜您, 这里精选的类代码### 示例或许可以为您提供帮助。

在下文中一共展示了Stmt类的10个代码### 示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码### 示例。

示例1: noteUnusedDriverStatement

// noteUnusedDriverStatement notes that si is no longer used and should
// be closed whenever possible (when c is next not in use), unless c is
// already closed.
func (db *DB) noteUnusedDriverStatement(c driver.Conn, si driver.Stmt) {
    db.mu.Lock()
    defer db.mu.Unlock()
    if db.outConn[c] {
        db.onConnPut[c] = append(db.onConnPut[c], func() {
            si.Close()
        })
    } else {
        si.Close()
    }
}

开发者ID:serge-hulne,项目名称:golang,代码行数:14,代码来源:sql.go

示例2: noteUnusedDriverStatement

// noteUnusedDriverStatement notes that si is no longer used and should
// be closed whenever possible (when c is next not in use), unless c is
// already closed.
func (db *DB) noteUnusedDriverStatement(c *driverConn, si driver.Stmt) {
    db.mu.Lock()
    defer db.mu.Unlock()
    if c.inUse {
        c.onPut = append(c.onPut, func() {
            si.Close()
        })
    } else {
        c.Lock()
        defer c.Unlock()
        if !c.finalClosed {
            si.Close()
        }
    }
}

开发者ID:arnold8,项目名称:go,代码行数:18,代码来源:sql.go

示例3: benchPreparedMockQuery

func benchPreparedMockQuery(b *testing.B, c *conn, stmt driver.Stmt) {
    rows, err := stmt.Query(nil)
    if err != nil {
        b.Fatal(err)
    }
    defer rows.Close()
    var dest [1]driver.Value
    for {
        if err := rows.Next(dest[:]); err != nil {
            if err == io.EOF {
                break
            }
            b.Fatal(err)
        }
    }
}

开发者ID:CadeLaRen,项目名称:traffic_control,代码行数:16,代码来源:bench_test.go

示例4: ctxDriverStmtQuery

func ctxDriverStmtQuery(ctx context.Context, si driver.Stmt, nvdargs []driver.NamedValue) (driver.Rows, error) {
    if siCtx, is := si.(driver.StmtQueryContext); is {
        return siCtx.QueryContext(ctx, nvdargs)
    }
    dargs, err := namedValueToValue(nvdargs)
    if err != nil {
        return nil, err
    }
    if ctx.Done() == context.Background().Done() {
        return si.Query(dargs)
    }

    type R struct {
        err   error
        panic interface{}
        rowsi driver.Rows
    }

    rc := make(chan R, 1)
    go func() {
        r := R{}
        defer func() {
            if v := recover(); v != nil {
                r.panic = v
            }
            rc <- r
        }()
        r.rowsi, r.err = si.Query(dargs)
    }()
    select {
    case <-ctx.Done():
        go func() {
            <-rc
            close(rc)
        }()
        return nil, ctx.Err()
    case r := <-rc:
        if r.panic != nil {
            panic(r.panic)
        }
        return r.rowsi, r.err
    }
}

开发者ID:achanda,项目名称:go,代码行数:43,代码来源:ctxutil.go

示例5: ctxDriverStmtExec

func ctxDriverStmtExec(ctx context.Context, si driver.Stmt, nvdargs []driver.NamedValue) (driver.Result, error) {
    if siCtx, is := si.(driver.StmtExecContext); is {
        return siCtx.ExecContext(ctx, nvdargs)
    }
    dargs, err := namedValueToValue(nvdargs)
    if err != nil {
        return nil, err
    }

    resi, err := si.Exec(dargs)
    if err == nil {
        select {
        default:
        case <-ctx.Done():
            return resi, ctx.Err()
        }
    }
    return resi, err
}

开发者ID:oshimaya,项目名称:go,代码行数:19,代码来源:ctxutil.go

最后编辑: kuteng  文档更新时间: 2021-08-23 19:14   作者:kuteng