|
|
@@ -18,15 +18,14 @@ type DBUtils struct {
|
|
|
|
|
|
func (dbUtil *DBUtils) Connect() {
|
|
|
var err error
|
|
|
- dbUtil.Handle, err = sql.Open("mysql", dbUtil.User + ":" + dbUtil.Password + "@tcp(" + dbUtil.Host + ")/" + dbUtil.Database)
|
|
|
+ dbUtil.Handle, err = sql.Open("mysql", dbUtil.User + ":" + dbUtil.Password + "@tcp(" + dbUtil.Host + ")/" + dbUtil.Database) // open handle
|
|
|
if err != nil {
|
|
|
- panic(err.Error()) // Just for example purpose. You should use proper error handling instead of panic
|
|
|
+ panic(err.Error()) // TODO
|
|
|
}
|
|
|
|
|
|
- // Open doesn't open a connection. Validate DSN data:
|
|
|
- err = dbUtil.Handle.Ping()
|
|
|
+ err = dbUtil.Handle.Ping() // try to connect
|
|
|
if err != nil {
|
|
|
- panic(err.Error()) // proper error handling instead of panic in your app
|
|
|
+ panic(err.Error()) // TODO
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -37,7 +36,7 @@ func (dbUtil DBUtils) 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)
|
|
|
+ rows, err := dbUtil.Handle.Query("SELECT " + what + " FROM " + from + " WHERE " + where + " = " + wherevalue) // TODO Parse?
|
|
|
if err != nil {
|
|
|
fmt.Println(err)
|
|
|
}
|
|
|
@@ -56,32 +55,74 @@ func (dbUtil DBUtils) GetString(what string, from string, where string, whereval
|
|
|
|
|
|
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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
-
|
|
|
- stmtOut, err := dbUtil.Handle.Prepare("SELECT " + what + " FROM " + from + " WHERE " + where + " = " + wherevalue)
|
|
|
if err != nil {
|
|
|
- panic(err.Error()) // proper error handling instead of panic in your app
|
|
|
+ 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)
|
|
|
+ }*/
|
|
|
|
|
|
- fmt.Printf("%v", stmtOut)
|
|
|
-
|
|
|
- err = stmtOut.QueryRow(0).Scan(&username)
|
|
|
-
|
|
|
- fmt.Printf("%v", username)
|
|
|
+ return result
|
|
|
|
|
|
- return username*/
|
|
|
}
|