MCPcopy Index your code
hub / github.com/code-scan/Goal / SqlQuery

Function SqlQuery

Glogin/sql.go:36–89  ·  view source on GitHub ↗
(host, port, username, password, type_, sql string)

Source from the content-addressed store, hash-verified

34 return false
35}
36func SqlQuery(host, port, username, password, type_, sql string) []interface{} {
37 var result []interface{}
38
39 db, isLogin := login(host, port, username, password, type_)
40 if isLogin == false {
41 return result
42 }
43 isRaw := false
44 raw := []string{
45 "update ",
46 "insert ",
47 "delete ",
48 "drop ",
49 "create",
50 "set ",
51 "exec ",
52 "execute ",
53 }
54 for _, r := range raw {
55 if strings.Contains(sql, r) {
56 isRaw = true
57 break
58 }
59 }
60 if isRaw {
61 db.Exec(sql)
62 return result
63 }
64 rows, err := db.Raw(sql).Rows()
65 if err != nil {
66 result = append(result, err.Error())
67 return result
68 }
69 var colums []string
70 for rows.Next() {
71 if colums == nil {
72 colums, _ = rows.Columns()
73 }
74 result = append(result, colums)
75 columns := make([]interface{}, len(colums))
76 columnPointers := make([]interface{}, len(colums))
77 for i, _ := range columns {
78 columnPointers[i] = &columns[i]
79 }
80 rows.Scan(columnPointers...)
81 m := make(map[string]interface{})
82 for i, colName := range colums {
83 val := columnPointers[i].(*interface{})
84 m[colName] = *val
85 }
86 result = append(result, m)
87 }
88 return result
89}

Callers 1

TestSQLFunction · 0.92

Calls 2

loginFunction · 0.85
ErrorMethod · 0.80

Tested by 1

TestSQLFunction · 0.74