github.com/giovannyortegon/go@v0.0.0-20220115155912-8890063f5bdd/src/WebProfesional/5-GoMySql/db/databaseGO.go (about)

     1  package db
     2  
     3  import (
     4  	"database/sql"
     5  	"fmt"
     6  
     7  	_ "github.com/go-sql-driver/mysql"
     8  )
     9  
    10  //username:password@tcp(localhost:3306)/database
    11  const url = "xxxxx:xxxxx@tcp(localhost:3306)/goweb_db"
    12  
    13  var db *sql.DB
    14  
    15  func Connect_DB() {
    16  
    17  	conn, err := sql.Open("mysql", url)
    18  
    19  	if err != nil {
    20  		panic(err)
    21  	}
    22  
    23  	fmt.Println("Conexion Exitosa")
    24  
    25  	db = conn
    26  }
    27  func Close_DB() {
    28  	db.Close()
    29  }
    30  
    31  func Ping_DB() {
    32  
    33  	if err := db.Ping(); err != nil {
    34  		panic(err)
    35  	}
    36  }
    37  
    38  func ExistsTable(tableName string) bool {
    39  	sql := fmt.Sprintf("SHOW TABLES LIKE '%s'", tableName)
    40  	rows, err := db.Query(sql)
    41  
    42  	if err != nil {
    43  		fmt.Println("Error:", err)
    44  	}
    45  	return rows.Next()
    46  }
    47  
    48  func CreateTable_DB(schema string, name string) {
    49  	if !ExistsTable(name) {
    50  		_, err := db.Exec(schema)
    51  		if err != nil {
    52  			fmt.Println(err)
    53  		}
    54  	} else {
    55  		fmt.Println("[!] La tabla ya Existe !!")
    56  	}
    57  }
    58  
    59  func TruncateTable(tableName string) {
    60  	sql := fmt.Sprintf("TRUNCATE %s", tableName)
    61  	Exec(sql)
    62  }
    63  
    64  func Exec(query string, args ...interface{}) (sql.Result, error) {
    65  	result, err := db.Exec(query, args...)
    66  
    67  	if err != nil {
    68  		fmt.Println(err)
    69  	}
    70  
    71  	return result, err
    72  }
    73  
    74  func Query(query string, args ...interface{}) (*sql.Rows, error) {
    75  	rows, err := db.Query(query, args...)
    76  
    77  	if err != nil {
    78  		fmt.Println(err)
    79  	}
    80  
    81  	return rows, err
    82  }