mirror of
https://github.com/sairson/Yasso.git
synced 2026-02-05 19:44:18 +08:00
57 lines
958 B
Go
57 lines
958 B
Go
package config
|
|
|
|
import (
|
|
"database/sql"
|
|
)
|
|
|
|
type Results struct {
|
|
Columns []string
|
|
Rows [][]string
|
|
}
|
|
|
|
func SQLExecute(db *sql.DB, q string) (*Results, error) {
|
|
if q == "" {
|
|
return nil, nil
|
|
}
|
|
rows, err := db.Query(q)
|
|
//rows, err := db.Query(q)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
columns, err := rows.Columns()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var results [][]string
|
|
for rows.Next() {
|
|
rs := make([]sql.NullString, len(columns))
|
|
rsp := make([]interface{}, len(columns))
|
|
for i := range rs {
|
|
rsp[i] = &rs[i]
|
|
}
|
|
if err = rows.Scan(rsp...); err != nil {
|
|
break
|
|
}
|
|
|
|
_rs := make([]string, len(columns))
|
|
for i := range rs {
|
|
_rs[i] = rs[i].String
|
|
}
|
|
results = append(results, _rs)
|
|
}
|
|
if closeErr := rows.Close(); closeErr != nil {
|
|
return nil, closeErr
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return &Results{
|
|
Columns: columns,
|
|
Rows: results,
|
|
}, nil
|
|
}
|