Created
December 21, 2017 07:52
-
-
Save 6londe/c16a7968b268726df3302d72e80788a8 to your computer and use it in GitHub Desktop.
MySQL CRUD Function in Go Language
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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