package main import ( "database/sql" "fmt" "log" "git.x2erp.com/qdy/go-db/factory" ) func main() { // 创建数据库工厂 dbFactory, err := factory.NewDBFactory() if err != nil { log.Fatalf("Failed to create DB factory: %v", err) } // 显示可用的数据库驱动 drivers := dbFactory.GetAvailableDrivers() fmt.Printf("Available database drivers: %v\n", drivers) // 显示当前使用的数据库配置 config := dbFactory.GetConfig() dbConfig := config.GetDatabase() // 通过接口方法获取数据库配置 fmt.Printf("Using database type: %s\n", dbConfig.Type) fmt.Printf("Database host: %s:%d\n", dbConfig.Host, dbConfig.Port) fmt.Printf("Database name: %s\n", dbConfig.Database) // 创建数据库连接 db, err := dbFactory.CreateDB() if err != nil { log.Fatalf("Failed to create database connection: %v", err) } defer db.Close() fmt.Println("Successfully connected to database!") // 测试连接 if err := testConnection(db, dbConfig.Type); err != nil { log.Printf("Query test failed: %v", err) } else { fmt.Println("Database connection test passed!") } } func testConnection(db *sql.DB, dbType string) error { var query string switch dbType { case "mysql", "postgres", "sqlserver": query = "SELECT 1" case "oracle": query = "SELECT 1 FROM DUAL" default: query = "SELECT 1" } var result int err := db.QueryRow(query).Scan(&result) if err != nil { return fmt.Errorf("test query failed: %v", err) } if result != 1 { return fmt.Errorf("unexpected test result: %d", result) } return nil }