Sin descripción
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.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. fmt.Printf("Using database type: %s\n", config.Database.Type)
  20. fmt.Printf("Database host: %s:%d\n", config.Database.Host, config.Database.Port) // 修正这里
  21. fmt.Printf("Database name: %s\n", config.Database.Database) // 修正这里
  22. // 创建数据库连接
  23. db, err := dbFactory.CreateDB()
  24. if err != nil {
  25. log.Fatalf("Failed to create database connection: %v", err)
  26. }
  27. defer db.Close()
  28. fmt.Println("Successfully connected to database!")
  29. // 测试连接
  30. if err := testConnection(db, config.Database.Type); err != nil { // 修正这里
  31. log.Printf("Query test failed: %v", err)
  32. } else {
  33. fmt.Println("Database connection test passed!")
  34. }
  35. }
  36. func testConnection(db *sql.DB, dbType string) error {
  37. var query string
  38. switch dbType {
  39. case "mysql", "postgres", "sqlserver":
  40. query = "SELECT 1"
  41. case "oracle":
  42. query = "SELECT 1 FROM DUAL"
  43. default:
  44. query = "SELECT 1"
  45. }
  46. var result int
  47. err := db.QueryRow(query).Scan(&result)
  48. if err != nil {
  49. return fmt.Errorf("test query failed: %v", err)
  50. }
  51. if result != 1 {
  52. return fmt.Errorf("unexpected test result: %d", result)
  53. }
  54. return nil
  55. }