|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | 
|  | // | 
|  | // Use of this source code is governed by an MIT-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // +build go1.8 | 
|  |  | 
|  | package sqlite3 | 
|  |  | 
|  | import ( | 
|  | "database/sql/driver" | 
|  | "errors" | 
|  |  | 
|  | "context" | 
|  | ) | 
|  |  | 
|  | // Ping implement Pinger. | 
|  | func (c *SQLiteConn) Ping(ctx context.Context) error { | 
|  | if c.db == nil { | 
|  | return errors.New("Connection was closed") | 
|  | } | 
|  | return nil | 
|  | } | 
|  |  | 
|  | // QueryContext implement QueryerContext. | 
|  | func (c *SQLiteConn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) { | 
|  | list := make([]namedValue, len(args)) | 
|  | for i, nv := range args { | 
|  | list[i] = namedValue(nv) | 
|  | } | 
|  | return c.query(ctx, query, list) | 
|  | } | 
|  |  | 
|  | // ExecContext implement ExecerContext. | 
|  | func (c *SQLiteConn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) { | 
|  | list := make([]namedValue, len(args)) | 
|  | for i, nv := range args { | 
|  | list[i] = namedValue(nv) | 
|  | } | 
|  | return c.exec(ctx, query, list) | 
|  | } | 
|  |  | 
|  | // PrepareContext implement ConnPrepareContext. | 
|  | func (c *SQLiteConn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) { | 
|  | return c.prepare(ctx, query) | 
|  | } | 
|  |  | 
|  | // BeginContext implement ConnBeginContext. | 
|  | func (c *SQLiteConn) BeginContext(ctx context.Context) (driver.Tx, error) { | 
|  | return c.begin(ctx) | 
|  | } | 
|  |  | 
|  | // QueryContext implement QueryerContext. | 
|  | func (s *SQLiteStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { | 
|  | list := make([]namedValue, len(args)) | 
|  | for i, nv := range args { | 
|  | list[i] = namedValue(nv) | 
|  | } | 
|  | return s.query(ctx, list) | 
|  | } | 
|  |  | 
|  | // ExecContext implement ExecerContext. | 
|  | func (s *SQLiteStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { | 
|  | list := make([]namedValue, len(args)) | 
|  | for i, nv := range args { | 
|  | list[i] = namedValue(nv) | 
|  | } | 
|  | return s.exec(ctx, list) | 
|  | } |