Brak opisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test.go 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "log"
  6. "git.x2erp.com/qdy/go-db/factory"
  7. )
  8. func main() {
  9. // 创建数据库工厂
  10. dbFactory, err := factory.NewDBFactory()
  11. if err != nil {
  12. log.Fatalf("Failed to create DB factory: %v", err)
  13. }
  14. // 显示可用的数据库驱动
  15. drivers := dbFactory.GetAvailableDrivers()
  16. fmt.Printf("Available database drivers: %v\n", drivers)
  17. // 显示当前使用的数据库配置
  18. config := dbFactory.GetConfig()
  19. dbConfig := config.GetDatabase() // 通过接口方法获取数据库配置
  20. fmt.Printf("Using database type: %s\n", dbConfig.Type)
  21. fmt.Printf("Database host: %s:%d\n", dbConfig.Host, dbConfig.Port)
  22. fmt.Printf("Database name: %s\n", dbConfig.Database)
  23. // 创建数据库连接
  24. db, err := dbFactory.CreateDB()
  25. if err != nil {
  26. log.Fatalf("Failed to create database connection: %v", err)
  27. }
  28. defer db.Close()
  29. fmt.Println("Successfully connected to database!")
  30. // 测试连接
  31. if err := testConnection(db, dbConfig.Type); err != nil {
  32. log.Printf("Query test failed: %v", err)
  33. } else {
  34. fmt.Println("Database connection test passed!")
  35. }
  36. }
  37. func testConnection(db *sql.DB, dbType string) error {
  38. var query string
  39. switch dbType {
  40. case "mysql", "postgres", "sqlserver":
  41. query = "SELECT 1"
  42. case "oracle":
  43. query = "SELECT 1 FROM DUAL"
  44. default:
  45. query = "SELECT 1"
  46. }
  47. var result int
  48. err := db.QueryRow(query).Scan(&result)
  49. if err != nil {
  50. return fmt.Errorf("test query failed: %v", err)
  51. }
  52. if result != 1 {
  53. return fmt.Errorf("unexpected test result: %d", result)
  54. }
  55. return nil
  56. }