1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| package main
import ( "database/sql" _ "github.com/go-sql-driver/mysql" "log" "strings" )
type Student struct { id int name string age int }
func main() { db, err := InitDatabase() defer db.Close() if err != nil { log.Println(err) return }
insert := "insert into person (name, age) values (?,?)" err = Execute(db, insert, "xiaoming", 23) if err != nil { log.Println("insert data error : %v\n", err) return }
querySql := "select * from person" data, err := QueryData(db,querySql) defer data.Close() if err != nil { log.Printf("query data error:%v\n", err) return } s := new(Student) for data.Next() { data.Scan(&s.id, &s.name, &s.age) log.Println(*s) } }
func InitDatabase() (*sql.DB, error) { url := strings.Join([]string{"root", ":", "123456", "@tcp(", "127.0.0.1", ":", "3306", ")/", "gomysql"}, "") db, err := sql.Open("mysql", url) if err != nil { log.Printf("open database error:%v", err) return nil, err } return db, nil }
func Execute(db *sql.DB, sql string, params ...interface{}) error { stmt, _ := db.Prepare(sql) defer stmt.Close() _, err := stmt.Exec(params...) if err != nil { log.Printf("execute sql error:%v\n", err) return err } log.Println("execute sql success") return nil }
func QueryData(db *sql.DB, sql string, params ...interface{}) (*sql.Rows, error) { stmt, _ := db.Prepare(sql) defer stmt.Close() rows, err := stmt.Query(params...) if err != nil { log.Printf("query data error:%v", err) return nil, err } log.Println("query data success") return rows, nil }
|