database/sql

Package sql provides a generic interface around SQL (or SQL-like) databases.

The sql package must be used in conjunction with a database driver. See https://golang.org/s/sqldrivers for a list of drivers.

Drivers that do not support context cancelation will not return until after the query is completed.

For usage examples, see the wiki page at https://golang.org/s/sqlwiki.

API

    func Drivers() []string
    func Register(name string, driver driver.Driver)

type ColumnType

    func (ci *ColumnType) DatabaseTypeName() string
    func (ci *ColumnType) DecimalSize() (precision, scale int64, ok bool)
    func (ci *ColumnType) Length() (length int64, ok bool)
    func (ci *ColumnType) Name() string
    func (ci *ColumnType) Nullable() (nullable, ok bool)
    func (ci *ColumnType) ScanType() reflect.Type

type Conn

    func (c *Conn) BeginTx(ctx context.Context, opts *TxOptions) (*Tx, error)
    func (c *Conn) Close() error
    func (c *Conn) ExecContext(ctx context.Context, query string, args ...interface{}) (Result, error)
    func (c *Conn) PingContext(ctx context.Context) error
    func (c *Conn) PrepareContext(ctx context.Context, query string) (*Stmt, error)
    func (c *Conn) QueryContext(ctx context.Context, query string, args ...interface{}) (*Rows, error)
    func (c *Conn) QueryRowContext(ctx context.Context, query string, args ...interface{}) *Row

type DB

    func Open(driverName, dataSourceName string) (*DB, error)
    func OpenDB(c driver.Connector) *DB
    func (db *DB) Begin() (*Tx, error)
    func (db *DB) BeginTx(ctx context.Context, opts *TxOptions) (*Tx, error)
    func (db *DB) Close() error
    func (db *DB) Conn(ctx context.Context) (*Conn, error)
    func (db *DB) Driver() driver.Driver
    func (db *DB) Exec(query string, args ...interface{}) (Result, error)
    func (db *DB) ExecContext(ctx context.Context, query string, args ...interface{}) (Result, error)
    func (db *DB) Ping() error
    func (db *DB) PingContext(ctx context.Context) error
    func (db *DB) Prepare(query string) (*Stmt, error)
    func (db *DB) PrepareContext(ctx context.Context, query string) (*Stmt, error)
    func (db *DB) Query(query string, args ...interface{}) (*Rows, error)
    func (db *DB) QueryContext(ctx context.Context, query string, args ...interface{}) (*Rows, error)
    func (db *DB) QueryRow(query string, args ...interface{}) *Row
    func (db *DB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *Row
    func (db *DB) SetConnMaxLifetime(d time.Duration)
    func (db *DB) SetMaxIdleConns(n int)
    func (db *DB) SetMaxOpenConns(n int)
    func (db *DB) Stats() DBStats

type DBStats
type IsolationLevel

    func (i IsolationLevel) String() string

type NamedArg

    func Named(name string, value interface{}) NamedArg

type NullBool

    func (n *NullBool) Scan(value interface{}) error
    func (n NullBool) Value() (driver.Value, error)

type NullFloat64

    func (n *NullFloat64) Scan(value interface{}) error
    func (n NullFloat64) Value() (driver.Value, error)

type NullInt64

    func (n *NullInt64) Scan(value interface{}) error
    func (n NullInt64) Value() (driver.Value, error)

type NullString

    func (ns *NullString) Scan(value interface{}) error
    func (ns NullString) Value() (driver.Value, error)

type Out
type RawBytes
type Result
type Row

    func (r *Row) Scan(dest ...interface{}) error

type Rows

    func (rs *Rows) Close() error
    func (rs *Rows) ColumnTypes() ([]*ColumnType, error)
    func (rs *Rows) Columns() ([]string, error)
    func (rs *Rows) Err() error
    func (rs *Rows) Next() bool
    func (rs *Rows) NextResultSet() bool
    func (rs *Rows) Scan(dest ...interface{}) error

type Scanner
type Stmt

    func (s *Stmt) Close() error
    func (s *Stmt) Exec(args ...interface{}) (Result, error)
    func (s *Stmt) ExecContext(ctx context.Context, args ...interface{}) (Result, error)
    func (s *Stmt) Query(args ...interface{}) (*Rows, error)
    func (s *Stmt) QueryContext(ctx context.Context, args ...interface{}) (*Rows, error)
    func (s *Stmt) QueryRow(args ...interface{}) *Row
    func (s *Stmt) QueryRowContext(ctx context.Context, args ...interface{}) *Row

type Tx

    func (tx *Tx) Commit() error
    func (tx *Tx) Exec(query string, args ...interface{}) (Result, error)
    func (tx *Tx) ExecContext(ctx context.Context, query string, args ...interface{}) (Result, error)
    func (tx *Tx) Prepare(query string) (*Stmt, error)
    func (tx *Tx) PrepareContext(ctx context.Context, query string) (*Stmt, error)
    func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error)
    func (tx *Tx) QueryContext(ctx context.Context, query string, args ...interface{}) (*Rows, error)
    func (tx *Tx) QueryRow(query string, args ...interface{}) *Row
    func (tx *Tx) QueryRowContext(ctx context.Context, query string, args ...interface{}) *Row
    func (tx *Tx) Rollback() error
    func (tx *Tx) Stmt(stmt *Stmt) *Stmt
    func (tx *Tx) StmtContext(ctx context.Context, stmt *Stmt) *Stmt

type TxOptions

mysql

1. con.go, 先初始化一个全局的connection

import (
    "database/sql"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

var (
    dbCon *sql.DB
    err   error
)

func init() {
    // db, err := sql.Open("mysql", "<username>:<pw>@tcp(<HOST>:<port>)/<dbname>?charset=utf8")
    if err != nil {
        log.Print(err.Error())
    }
}

2. 操作mysql

2.1. 增
2.2. 删
2.3. 改
2.4. 查
2.4.1. 查询一个
2.4.2. 查寻多个
2.4.3. limit查询
2.5 查询最后1条记录


疑问

1. golang定义的数据类型一定要与sql定义数据类型保持一致吗?
答案: 不需要,比如 create_time 是 DATETIME 类型的, 我在代码定义了一个string来接收,那么scan出来的就是string,即你定义什么类型,scan出来的就是什么类型

sql := "SELECT name, password, ctime from user where id =?"
...
var id int
var name, pwd,create_time string

for row.Next(){
   row.Scan(&name,&pwd,&create_time) 
}

sqlite3

results matching ""

    No results matching ""