Skip to content

Instantly share code, notes, and snippets.

@6londe
Created December 21, 2017 07:52
Show Gist options
  • Save 6londe/c16a7968b268726df3302d72e80788a8 to your computer and use it in GitHub Desktop.
Save 6londe/c16a7968b268726df3302d72e80788a8 to your computer and use it in GitHub Desktop.
MySQL CRUD Function in Go Language
package main
import (
"fmt"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
var MYSQL_IP = "localhost"
var MYSQL_PORT = "3306"
var MYSQL_USER = "admin"
var MYSQL_PW = "123"
var DB_NAME = "testdb"
var TABLE_NAME = "testtable"
type data struct {
id string
name string
}
func Create() {
db := connect()
_, err := db.Exec("CREATE TABLE " + TABLE_NAME + " (id VARCHAR(10), name VARCHAR(10))")
if err != nil {
panic(err.Error())
}
db.Close()
}
func Drop() {
db := connect()
_, err := db.Exec("DROP TABLE " + TABLE_NAME)
if err != nil {
panic(err.Error())
}
db.Close()
}
func Insert(_data data) {
db := connect()
stmt, err := db.Prepare("INSERT INTO " + TABLE_NAME + " VALUES (?, ?)")
if err != nil {
panic(err.Error())
}
defer stmt.Close()
_, err = stmt.Exec(_data.id, _data.name)
if err != nil {
panic(err.Error())
}
db.Close()
}
func Query(where string, what string) *sql.Rows {
db := connect()
rows, err := db.Query("SELECT id, name FROM " + TABLE_NAME + " WHERE " + where + " = ?", what)
if err != nil {
panic(err.Error())
}
db.Close()
return rows
}
func QueryAll() *sql.Rows {
db := connect()
rows, err := db.Query("SELECT * FROM " + TABLE_NAME)
if err != nil {
panic(err.Error())
}
db.Close()
return rows
}
/*
func Update(where string, what string, _data data) {
db := connect()
stmt, err := db.Prepare("UPDATE " + TABLE_NAME + " SET " + ... + " WHERE " + where + " =?")
if err != nil {
panic(err.Error())
}
defer stmt.Close()
_, err = stmt.Exec( ... , what)
if err != nil {
panic(err.Error())
}
db.Close()
}
*/
func Delete(where string, what string) {
db := connect()
stmt, err := db.Prepare("DELETE FROM " + TABLE_NAME + " WHERE " + where + " =?")
if err != nil {
panic(err.Error())
}
defer stmt.Close()
_, err = stmt.Exec(what)
if err != nil {
panic(err.Error())
}
db.Close()
}
func connect() *sql.DB {
db, err := sql.Open("mysql", MYSQL_USER + ":" + MYSQL_PW + "@tcp(" + MYSQL_IP + ":" + MYSQL_PORT + ")/" + DB_NAME)
if err != nil {
panic(err.Error())
}
return db
}
func printRows(rows *sql.Rows) {
var _data data
for rows.Next() {
err := rows.Scan(&_data.id, &_data.name)
if err != nil {
panic(err.Error())
}
fmt.Println(_data.id, _data.name)
}
err := rows.Err()
if err != nil {
panic(err.Error())
}
}
func main() {
Create()
Insert(data{"1", "kim"})
Insert(data{"2", "lee"})
Insert(data{"3", "park"})
Insert(data{"4", "choi"})
rows := Query("id", "2")
printRows(rows)
fmt.Println("-----")
rows = QueryAll()
printRows(rows)
Delete("name", "choi")
Drop()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment