easydb

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 12, 2025 License: MIT Imports: 11 Imported by: 1

README

简介

简单的Go数据库接口程序。对 database/sql 标准库和各数据库驱动进行封装,使用通用接口操作数据库,无需关心底层差异。

各数据库驱动实现

  • MySQL:github.com/go-sql-driver/mysql
  • PostgreSQL:github.com/lib/pq
  • SQLite:github.com/mattn/go-sqlite3
  • SQL Server:github.com/denisenkom/go-mssqldb
  • Oracle: github.com/godror/godror

连接示例

import (
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
	// _ "github.com/lib/pq"
)

var sqldb *sql.DB
var err error

// 连接数据库
sqldb, err = sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
// sqldb, err = sql.Open("postgres", "user=postgres password=secret dbname=dbname host=127.0.0.1 port=5432 sslmode=disable search_path=myschema")
// sqldb, err := sql.Open("sqlite3", "./mydb.sqlite")

if err != nil {
	panic(err)
}

// 测试连接
if err := sqldb.Ping(); err != nil {
	log.Fatal(err)
}

// 这个很少用。是关闭整个连接池。
defer sqldb.Close()

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPlaceholder

func GetPlaceholder(dbType string, index int) string

getPlaceholder 生成参数占位符 mysql, sqlite 的参数占位符是?. postgres则是 $1, $2, $3 ...

func SetEasyDb

func SetEasyDb(edb *EasyDb)

SetEasyDb 设置EasyDb数据库连接单例 使用NewEasyDbBySqlDB 或 NewEasyDb方法,初始化EasyDb数据库连接实例。然后通过此函数设置单例

Types

type EasyDb

type EasyDb struct {
	// contains filtered or unexported fields
}

func GetEasyDb

func GetEasyDb() *EasyDb

GetEasyDb 获取EasyDb数据库连接单例

func NewEasyDb

func NewEasyDb(driverName, dbHost, dbUser, dbPassword, dbName string, dbPort int) *EasyDb

NewEasyDb 初始化EasyDb数据库连接实例 driverName See https://golang.org/s/sqldrivers for a list of third-party drivers.

func NewEasyDbBySqlDB

func NewEasyDbBySqlDB(sqldb *sql.DB) *EasyDb

NewEasyDbBySqlDB 使用sqldb *sql.DB参数初始化EasyDb实例。 各数据库驱动如下所示:

import (

_ "github.com/go-sql-driver/mysql"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"

)

		  sqldb, err = sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/debugdb")
     //  sqldb, err = sql.Open("postgres", "user=postgres password=postgres dbname=postgres host=127.0.0.1 port=5432 sslmode=disable search_path=public")
     //  sqldb, err := sql.Open("sqlite3", "./mydb.sqlite")
	      d := NewEasyDbBySqlDB(sqldb)

func (*EasyDb) CloseDb

func (d *EasyDb) CloseDb() error

func (EasyDb) DecodeInterface

func (d EasyDb) DecodeInterface(data map[string]interface{}) map[string]interface{}

DecodeInterface 用于解码GetOneData方法返回的结果 data 参数类型实际是 map[string][]byte 示例:

data := make(map[string]interface{}, 3)
d.GetOneData("SELECT id, name, age, wallet_balance FROM $1", &data, "users")
fmt.Printf("-----GetOneData--result(%+v)----\n", d.DecodeInterface(data))

func (*EasyDb) Exec

func (d *EasyDb) Exec(query string, args ...interface{}) (sql.Result, error)

Exec 重写Exec方法以记录SQL查询

func (*EasyDb) ExecByFile

func (d *EasyDb) ExecByFile(filepath string, args ...interface{}) (sql.Result, error)

ExecByFile 从文件执行SQL脚本

func (*EasyDb) ExecInsert

func (d *EasyDb) ExecInsert(tableName string, columns []string, values []interface{}) error

ExecInsert 执行单条插入语句

func (*EasyDb) ExecSqlWithTransaction

func (d *EasyDb) ExecSqlWithTransaction(sqlStatements []string) error

ExecSqlWithTransaction 在事务中执行多条SQL语句

func (*EasyDb) ExecUpdateByValues

func (d *EasyDb) ExecUpdateByValues(tableName string, columns []string, values []interface{}, whereClause string, whereValues []interface{}) error

ExecUpdate 执行更新语句 tableName: 表名 columns: 要更新的列名 values: 要更新的值 whereClause: WHERE子句。例如:"id = $1" whereValues: WHERE子句中的参数值。例如:[]interface{}{1}

func (*EasyDb) GetMany

func (d *EasyDb) GetMany(querySQL string, dest interface{}, args ...interface{}) error

GetMany 根据where条件查询多条数据 querySQL SQL查询语句 dest: 用于接收结果的切片的指针 args: SQL参数 示例:

var datalist []map[string]interface{}
d.GetMany("SELECT id, name, age, wallet_balance FROM users", &datalist)

func (*EasyDb) GetOne

func (d *EasyDb) GetOne(querySQL string, dest []interface{}, args ...interface{}) error

GetOne 根据where条件查询单条数据 querySQL SQL查询语句 args: SQL参数 dest: 用于接收结果的结构体指针 示例:

var qrid *int
var qrToUrl *string
GetOne("select id, to_url from qr_list where code = $1", []interface{}{qrid, qrToUrl}, "codexxx")

func (*EasyDb) GetOneData

func (d *EasyDb) GetOneData(querySQL string, dest interface{}, args ...interface{}) error

GetOneData 根据where条件查询单条数据,支持结构体指针或map接收结果 querySQL SQL查询语句 例:select field1, field2 from table1 where name = $1 and status = $2 dest: 用于接收结果的结构体指针或map[string]any, *map[string]any args: SQL参数 示例:

data := make(map[string]interface{}, 3)
d.GetOneData("SELECT id, name, age, wallet_balance FROM $1", data, "users")
// 传指针亦可 d.GetOneData("SELECT id, name, age, wallet_balance FROM $1", &data, "users")
fmt.Printf("-----GetOneData--result(%+v)----\n", data)

func (*EasyDb) Ping

func (d *EasyDb) Ping() error

func (*EasyDb) Query

func (d *EasyDb) Query(query string, args ...interface{}) (*sql.Rows, error)

Query 重写Query方法以记录SQL查询

func (*EasyDb) QueryRow

func (d *EasyDb) QueryRow(query string, args ...interface{}) *sql.Row

QueryRow 重写QueryRow方法以记录SQL查询

Directories

Path Synopsis
sql

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL