Help us shape the future of Go! Take the 2026 Go Developer Survey

judb

package module
v1.2.3 Latest Latest
Warning

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

Go to latest
Published: Dec 28, 2025 License: Apache-2.0 Imports: 17 Imported by: 0

README

judb

数据库用法的简单包装

支持的数据库类型

  • SQLite
  • MySQL
  • PostgreSQL

Documentation

Index

Constants

View Source
const (
	LogDbTypeFile    = "file"
	LogDbTypeMysql   = "mysql"
	LogDbTypeSqlite  = "sqlite"
	LogDbTypePostgre = "postgre"
)
View Source
const (
	DatabaseTypeMysql    = "mysql"
	DatabaseTypeSqlite   = "sqlite"
	DatabaseTypePostgres = "postgres"
)

Variables

This section is empty.

Functions

func ClearLog

func ClearLog(tab string)

ClearLog 清空指定日志数据库中的所有记录

func DeleteLog

func DeleteLog(tab string, idStart, idStop int64)

DeleteLog 删除默认的日志记录,idStart 到 idStop 的log都会被删除,包含这两个 id,要删除一个id 设置 idStart = id = idStop

func LogToBlack

func LogToBlack(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToBlackF

func LogToBlackF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToBlue

func LogToBlue(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToBlueF

func LogToBlueF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToCyan

func LogToCyan(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToCyanF

func LogToCyanF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToGreen

func LogToGreen(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToGreenF

func LogToGreenF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToMagenta

func LogToMagenta(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToMagentaF

func LogToMagentaF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToRed

func LogToRed(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToRedF

func LogToRedF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToWhite

func LogToWhite(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToWhiteF

func LogToWhiteF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToYellow

func LogToYellow(tab string, a ...interface{})

noinspection GoUnusedExportedFunction

func LogToYellowF

func LogToYellowF(tab, format string, a ...interface{})

noinspection GoUnusedExportedFunction

func MakeMysqlConfig

func MakeMysqlConfig(host, port, dbname, user, pass string) *mysql.Config

MakeMysqlConfig 这个函数是为了简化 Config 的构造

func MakeMysqlSSLConfig

func MakeMysqlSSLConfig(host, port, dbname, user, pass, tlsName, clientKeyPath, clientCertPath, caCertPath string) *mysql.Config

MakeMysqlSSLConfig 如果 TLS 注册失败,函数会返回 nil,这个函数是为了简化 Config 的构造 tlsName 如果是多连接需要不同名称,否则会产生冲突,单联接时可以传入空串,相当于使用默认名称 "judb-tls-config"

func MakeTLSConfig

func MakeTLSConfig(clientKeyPath, clientCertPath, caCertPath, serverName string) (cfg *tls.Config)

MakeTLSConfig Mysql 使用证书的方式和 PostgreSQL 不太一样,需要单独注册 另外,如果有多个连接,需要注册不同的名字:"judb-tls-config1","judb-tls-config2"

func SetErrorSkip

func SetErrorSkip(skip int)

SetErrorSkip 设置错误信息输出的栈层次,默认是 1,在调用者位置,0 在库的位置

func SetLogDb

func SetLogDb(dbType string, db *sql.DB, save bool)

SetLogDb 设置 Log 保存到数据库的方式

dbType string: 数据库类型, 目前支持 sqlite, mysql 和 postgresql 3 个值

db *DB: 数据库, 支持 MySql 和 SQLite3, 如果这个值是 nil, 则相当于取消日志系统绑定的数据库

save bool: 是否保存到数据库, 即使设置了日志系统绑定的数据库, 仍然可以设置不保存到数据库, 只打印到输出窗口 noinspection GoUnusedExportedFunction

func SetLogLimit

func SetLogLimit(name string, limit int64)

SetLogLimit 设置日志表的最多条数, 防止日志无限增长, 但是旧的日志会被覆盖. 对于文件日志类型, 这个函数是无效的.

name string: 需要设置的日志名称, 空串对应的是默认日志.

limit int64: 设置日志的最大条数, 此值为 0 或负数, 则取消最大条数.

func SetLogPath

func SetLogPath(path string, save bool)

Types

type Db

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

func (*Db) Begin

func (db *Db) Begin() (*sql.Tx, SqlResult)

func (*Db) Close

func (db *Db) Close()

func (*Db) Exec

func (db *Db) Exec(sqlCase string, v ...interface{}) SqlResult

func (*Db) GetDb

func (db *Db) GetDb() *sql.DB

func (*Db) OpenMysql

func (db *Db) OpenMysql(cfg *mysql.Config) bool

func (*Db) OpenPostgres

func (db *Db) OpenPostgres(cfg *postgres.Config) bool

func (*Db) OpenSqlite3

func (db *Db) OpenSqlite3(dbpath, params string) bool

OpenSqlite3 支持多线程写入, 这会稍微降低性能, 但是大多数场景很难避免多线程写入, 如果不启用这个特性, 写入时候有概率触发表被锁定提示.

dbpath: example ./data/log.db

params: 如果不需要修改参数,可以设置为空串,此时它的值是 _mutex=full&_journal_mode=WAL

func (*Db) OutputConnectInfo

func (db *Db) OutputConnectInfo() bool

func (*Db) Query

func (db *Db) Query(sqlCase string, qc QueryCall, v ...interface{}) SqlResult

Query 查询需要返回数据的语句,数据从回调函数的 rows 里获取,无需执行 rows 的 Close 函数, 这个设计的目的是减少遗忘 Close 的可能,因为遗忘 Close 不会对程序有立即的影响,直到 Mysql 资源被耗尽,对于海量的查询语句来说,定位哪里忘记 Close 是非常困难的。 noinspection GoUnusedExportedFunction

func (*Db) QueryRow

func (db *Db) QueryRow(sqlCase string, v ...interface{}) *sql.Row

type LogInfo

type LogInfo struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*LogInfo) Get

func (li *LogInfo) Get(name string) int64

func (*LogInfo) Load

func (li *LogInfo) Load()

func (*LogInfo) Set

func (li *LogInfo) Set(name string, count int64)

type QueryCall

type QueryCall func(rows *sql.Rows)

type QueryFunc

type QueryFunc func(string, QueryCall, ...interface{}) SqlResult

type SQLiteMemDb

type SQLiteMemDb struct {
	Db *sql.DB
}

SQLiteMemDb SQLite 内存数据库, 它的函数并不支持并发, 但并不是说不能多线程调用, 而是不能频繁调用 普通的确认没有线程竞争的情况下是可以多线程调用的. 内存模式的数据库, 无论设置什么参数, 都不支持多线程 同时写

func (*SQLiteMemDb) Close

func (mdb *SQLiteMemDb) Close()

func (*SQLiteMemDb) LoadFromFile

func (mdb *SQLiteMemDb) LoadFromFile(fileDB string) bool

LoadFromFile 加载数据库内容到内存数据库

func (*SQLiteMemDb) Open

func (mdb *SQLiteMemDb) Open() bool

func (*SQLiteMemDb) SaveToFile

func (mdb *SQLiteMemDb) SaveToFile(fileDB string) bool

SaveToFile 这会把内存数据保存到指定的文件, 如果文件存在, 会被覆盖

type SqlResult

type SqlResult struct {
	Result sql.Result
	Code   string
	Error  string
}

func NewSqlResult

func NewSqlResult(err error) (rst SqlResult)

func (*SqlResult) Fail

func (mr *SqlResult) Fail() bool

func (*SqlResult) SetError

func (mr *SqlResult) SetError(err error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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