Files
flvx/beego-backend/common/database.go
T
2025-07-02 23:11:07 +08:00

97 lines
2.0 KiB
Go

package common
import (
"database/sql"
"fmt"
"log"
_ "github.com/mattn/go-sqlite3"
)
var DB *sql.DB
// InitDatabase 初始化sqlite3数据库
func InitDatabase() error {
var err error
DB, err = sql.Open("sqlite3", "data.db")
if err != nil {
return fmt.Errorf("连接数据库失败: %v", err)
}
if err = DB.Ping(); err != nil {
return fmt.Errorf("数据库连接测试失败: %v", err)
}
// 创建表结构
if err = createTables(); err != nil {
return fmt.Errorf("创建表结构失败: %v", err)
}
return nil
}
// createTables 创建表结构
func createTables() error {
tables := []string{
`CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
email VARCHAR(100),
is_active BOOLEAN NOT NULL DEFAULT 1
)`,
}
for _, table := range tables {
if _, err := DB.Exec(table); err != nil {
return err
}
}
// 创建默认管理员用户
//createDefaultUser()
fmt.Println("✅ 数据库表创建完成")
return nil
}
// createDefaultUser 创建默认管理员用户
func createDefaultUser() {
var count int
err := DB.QueryRow("SELECT COUNT(*) FROM users").Scan(&count)
if err != nil || count > 0 {
return
}
// 插入默认管理员用户
_, err = DB.Exec(`INSERT INTO users (username, password, email, is_active)
VALUES (?, ?, ?, ?)`,
"admin", "123456", "admin@example.com", true)
if err != nil {
log.Printf("创建默认用户失败: %v", err)
} else {
fmt.Println("✅ 创建默认管理员用户成功")
}
}
// Insert 插入数据
func Insert(sql string, args ...interface{}) (sql.Result, error) {
return DB.Exec(sql, args...)
}
// Update 更新数据
func Update(sql string, args ...interface{}) (sql.Result, error) {
return DB.Exec(sql, args...)
}
// Delete 删除数据
func Delete(sql string, args ...interface{}) (sql.Result, error) {
return DB.Exec(sql, args...)
}
// Select 查询数据
func Select(sql string, args ...interface{}) (*sql.Rows, error) {
return DB.Query(sql, args...)
}