package databaseutils import ( "database/sql" _ "github.com/go-sql-driver/mysql" "fmt" ) type DBUtils struct { User string Password string Host string Database string Handle *sql.DB } // db := dbUtils{"root", "root", "127.0.0.1", "gotest"} func (dbUtil *DBUtils) Connect() { var err error dbUtil.Handle, err = sql.Open("mysql", dbUtil.User + ":" + dbUtil.Password + "@tcp(" + dbUtil.Host + ")/" + dbUtil.Database) // open handle if err != nil { panic(err.Error()) // TODO } err = dbUtil.Handle.Ping() // try to connect if err != nil { panic(err.Error()) // TODO } } func (dbUtil DBUtils) Close() { dbUtil.Handle.Close() } func (dbUtil DBUtils) GetString(what string, from string, where string, wherevalue string) string { var username string rows, err := dbUtil.Handle.Query("SELECT " + what + " FROM " + from + " WHERE " + where + " = " + wherevalue) // TODO Parse? if err != nil { fmt.Println(err) } defer rows.Close() for rows.Next() { err := rows.Scan(&username) if err != nil { fmt.Println(err) } fmt.Println(username) } err = rows.Err() if err != nil { fmt.Println(err) } return username } // GetRow(what, from, where, wherevalue) func (dbUtil DBUtils) GetRow(options ...string) []string { var err error //if len(options) > 3 { // with or without where //rows, err := dbUtil.Handle.Query("SELECT " + options[0] + " FROM " + options[1] + " WHERE " + options[2] + " = " + options[3]) // TODO Parse? //} else { rows, err := dbUtil.Handle.Query("SELECT " + options[0] + " FROM " + options[1]) // TODO Parse? //} if err != nil { fmt.Println(err) } cols, err := rows.Columns() if err != nil { fmt.Println("Failed to get columns", err) var x []string; x[0] = ""; return x } // Result is your slice string. rawResult := make([][]byte, len(cols)) result := make([]string, len(cols)) dest := make([]interface{}, len(cols)) // A temporary interface{} slice for i, _ := range rawResult { dest[i] = &rawResult[i] // Put pointers to each string in the interface slice } for rows.Next() { err = rows.Scan(dest...) if err != nil { fmt.Println("Failed to scan row", err) var x []string; x[0] = ""; return x } for i, raw := range rawResult { if raw == nil { result[i] = "\\N" } else { result[i] = string(raw) } } } /* if err != nil { fmt.Println(err) } defer rows.Close() for rows.Next() { err := rows.Scan(&username) if err != nil { fmt.Println(err) } fmt.Println(username) } err = rows.Err() if err != nil { fmt.Println(err) }*/ return result }