Skip to content

Commit a194c9c

Browse files
authored
Merge pull request #251 from mattn/refactor
Refactoring for Go Tutorial
2 parents ca20da3 + 9fd334d commit a194c9c

File tree

4 files changed

+310
-276
lines changed

4 files changed

+310
-276
lines changed
Lines changed: 51 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,51 @@
1-
package main
2-
3-
import _ "github.com/denisenkom/go-mssqldb"
4-
import "database/sql"
5-
import "log"
6-
import "fmt"
7-
import "time"
8-
9-
var server = "localhost"
10-
var port = 1433
11-
var user = "sa"
12-
var password = "your_password"
13-
var database = "SampleDB"
14-
15-
// Delete an employee from database
16-
func ExecuteAggregateStatement(db *sql.DB) {
17-
result, err := db.Prepare("SELECT SUM(Price) as sum FROM Table_with_5M_rows")
18-
if err != nil {
19-
fmt.Println("Error preparing query: " + err.Error())
20-
}
21-
22-
row := result.QueryRow()
23-
var sum string
24-
err = row.Scan(&sum)
25-
fmt.Printf("Sum: %s\n", sum)
26-
}
27-
28-
func main() {
29-
// Connect to database
30-
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
31-
server, user, password, port, database)
32-
conn, err := sql.Open("mssql", connString)
33-
if err != nil {
34-
log.Fatal("Open connection failed:", err.Error())
35-
}
36-
fmt.Printf("Connected!\n")
37-
defer conn.Close()
38-
39-
t1 := time.Now()
40-
fmt.Printf("Start time: %s\n", t1)
41-
42-
ExecuteAggregateStatement(conn)
43-
44-
t2 := time.Since(t1)
45-
fmt.Printf("The query took: %s\n", t2)
46-
}
1+
package main
2+
3+
import (
4+
"database/sql"
5+
"fmt"
6+
"log"
7+
"time"
8+
9+
_ "github.com/denisenkom/go-mssqldb"
10+
)
11+
12+
var (
13+
server = "localhost"
14+
port = 1433
15+
user = "sa"
16+
password = "your_password"
17+
database = "SampleDB"
18+
)
19+
20+
// ExecuteAggregateStatement output summary of prices
21+
func ExecuteAggregateStatement(db *sql.DB) {
22+
result, err := db.Prepare("SELECT SUM(Price) as sum FROM Table_with_5M_rows")
23+
if err != nil {
24+
fmt.Println("Error preparing query: " + err.Error())
25+
}
26+
27+
row := result.QueryRow()
28+
var sum string
29+
err = row.Scan(&sum)
30+
fmt.Printf("Sum: %s\n", sum)
31+
}
32+
33+
func main() {
34+
// Connect to database
35+
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
36+
server, user, password, port, database)
37+
conn, err := sql.Open("mssql", connString)
38+
if err != nil {
39+
log.Fatal("Open connection failed:", err.Error())
40+
}
41+
fmt.Printf("Connected!\n")
42+
defer conn.Close()
43+
44+
t1 := time.Now()
45+
fmt.Printf("Start time: %s\n", t1)
46+
47+
ExecuteAggregateStatement(conn)
48+
49+
t2 := time.Since(t1)
50+
fmt.Printf("The query took: %s\n", t2)
51+
}

samples/tutorials/go/connect.go

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,37 @@
1-
package main
2-
3-
import _ "github.com/denisenkom/go-mssqldb"
4-
import "database/sql"
5-
import "log"
6-
import "fmt"
7-
8-
9-
var server = "localhost"
10-
var port = 1433
11-
var user = "sa"
12-
var password = "your_password"
13-
14-
func main() {
15-
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d",
16-
server, user, password, port)
17-
18-
conn, err := sql.Open("mssql", connString)
19-
if err != nil {
20-
log.Fatal("Open connection failed:", err.Error())
21-
}
22-
fmt.Printf("Connected!\n")
23-
defer conn.Close()
24-
stmt, err := conn.Prepare("select @@version")
25-
row := stmt.QueryRow()
26-
var result string
27-
28-
err = row.Scan(&result)
29-
if err != nil {
30-
log.Fatal("Scan failed:", err.Error())
31-
}
32-
fmt.Printf("%s\n", result)
33-
}
1+
package main
2+
3+
import (
4+
"database/sql"
5+
"fmt"
6+
"log"
7+
8+
_ "github.com/denisenkom/go-mssqldb"
9+
)
10+
11+
var (
12+
server = "localhost"
13+
port = 1433
14+
user = "sa"
15+
password = "your_password"
16+
)
17+
18+
func main() {
19+
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d",
20+
server, user, password, port)
21+
22+
conn, err := sql.Open("mssql", connString)
23+
if err != nil {
24+
log.Fatal("Open connection failed:", err.Error())
25+
}
26+
fmt.Printf("Connected!\n")
27+
defer conn.Close()
28+
stmt, err := conn.Prepare("select @@version")
29+
row := stmt.QueryRow()
30+
var result string
31+
32+
err = row.Scan(&result)
33+
if err != nil {
34+
log.Fatal("Scan failed:", err.Error())
35+
}
36+
fmt.Printf("%s\n", result)
37+
}

samples/tutorials/go/crud.go

Lines changed: 116 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,99 +1,116 @@
1-
package main
2-
3-
import _ "github.com/denisenkom/go-mssqldb"
4-
import "database/sql"
5-
import "log"
6-
import "fmt"
7-
8-
var server = "localhost"
9-
var port = 1433
10-
var user = "sa"
11-
var password = "your_password"
12-
var database = "SampleDB"
13-
14-
// Create an employee
15-
func CreateEmployee(db *sql.DB, name string, location string) (int64, error) {
16-
tsql := fmt.Sprintf("INSERT INTO TestSchema.Employees (Name, Location) VALUES ('%s','%s');",
17-
name, location)
18-
result, err := db.Exec(tsql)
19-
if err != nil {
20-
fmt.Println("Error inserting new row: " + err.Error())
21-
return -1, err
22-
}
23-
return result.LastInsertId()
24-
}
25-
26-
// Read all employees
27-
func ReadEmployees(db *sql.DB) (int, error) {
28-
tsql := fmt.Sprintf("SELECT Id, Name, Location FROM TestSchema.Employees;")
29-
rows, err := db.Query(tsql)
30-
if err != nil {
31-
fmt.Println("Error reading rows: " + err.Error())
32-
return -1, err
33-
}
34-
defer rows.Close()
35-
var count int = 0
36-
for rows.Next(){
37-
var name, location string
38-
var id int
39-
err := rows.Scan(&id, &name, &location)
40-
if err != nil {
41-
fmt.Println("Error reading rows: " + err.Error())
42-
return -1, err
43-
}
44-
fmt.Printf("ID: %d, Name: %s, Location: %s\n", id, name, location)
45-
count++
46-
}
47-
return count, nil
48-
}
49-
50-
// Update an employee's information
51-
func UpdateEmployee(db *sql.DB, name string, location string) (int64, error) {
52-
tsql := fmt.Sprintf("UPDATE TestSchema.Employees SET Location = '%s' WHERE Name= '%s'",
53-
location, name)
54-
result, err := db.Exec(tsql)
55-
if err != nil {
56-
fmt.Println("Error updating row: " + err.Error())
57-
return -1, err
58-
}
59-
return result.LastInsertId()
60-
}
61-
62-
// Delete an employee from database
63-
func DeleteEmployee(db *sql.DB, name string) (int64, error) {
64-
tsql := fmt.Sprintf("DELETE FROM TestSchema.Employees WHERE Name='%s';", name)
65-
result, err := db.Exec(tsql)
66-
if err != nil {
67-
fmt.Println("Error deleting row: " + err.Error())
68-
return -1, err
69-
}
70-
return result.RowsAffected()
71-
}
72-
73-
func main() {
74-
// Connect to database
75-
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
76-
server, user, password, port, database)
77-
conn, err := sql.Open("mssql", connString)
78-
if err != nil {
79-
log.Fatal("Open connection failed:", err.Error())
80-
}
81-
fmt.Printf("Connected!\n")
82-
defer conn.Close()
83-
84-
// Create employee
85-
createId, err := CreateEmployee(conn, "Jake", "United States")
86-
fmt.Printf("Inserted ID: %d successfully.\n", createId)
87-
88-
// Read employees
89-
count, err := ReadEmployees(conn)
90-
fmt.Printf("Read %d rows successfully.\n", count)
91-
92-
// Update from database
93-
updateId, err := UpdateEmployee(conn, "Jake", "Poland")
94-
fmt.Printf("Updated row with ID: %d successfully.\n", updateId)
95-
96-
// Delete from database
97-
rows, err := DeleteEmployee(conn, "Jake")
98-
fmt.Printf("Deleted %d rows successfully.\n", rows)
99-
}
1+
package main
2+
3+
import (
4+
"database/sql"
5+
"fmt"
6+
"log"
7+
8+
_ "github.com/denisenkom/go-mssqldb"
9+
)
10+
11+
var (
12+
server = "localhost"
13+
port = 1433
14+
user = "sa"
15+
password = "your_password"
16+
database = "SampleDB"
17+
)
18+
19+
// CreateEmployee create an employee
20+
func CreateEmployee(db *sql.DB, name string, location string) (int64, error) {
21+
tsql := fmt.Sprintf("INSERT INTO TestSchema.Employees (Name, Location) VALUES ('%s','%s');",
22+
name, location)
23+
result, err := db.Exec(tsql)
24+
if err != nil {
25+
fmt.Println("Error inserting new row: " + err.Error())
26+
return -1, err
27+
}
28+
return result.LastInsertId()
29+
}
30+
31+
// ReadEmployees read all employees
32+
func ReadEmployees(db *sql.DB) (int, error) {
33+
tsql := fmt.Sprintf("SELECT Id, Name, Location FROM TestSchema.Employees;")
34+
rows, err := db.Query(tsql)
35+
if err != nil {
36+
fmt.Println("Error reading rows: " + err.Error())
37+
return -1, err
38+
}
39+
defer rows.Close()
40+
count := 0
41+
for rows.Next() {
42+
var name, location string
43+
var id int
44+
err := rows.Scan(&id, &name, &location)
45+
if err != nil {
46+
fmt.Println("Error reading rows: " + err.Error())
47+
return -1, err
48+
}
49+
fmt.Printf("ID: %d, Name: %s, Location: %s\n", id, name, location)
50+
count++
51+
}
52+
return count, nil
53+
}
54+
55+
// UpdateEmployee update an employee's information
56+
func UpdateEmployee(db *sql.DB, name string, location string) (int64, error) {
57+
tsql := fmt.Sprintf("UPDATE TestSchema.Employees SET Location = '%s' WHERE Name= '%s'",
58+
location, name)
59+
result, err := db.Exec(tsql)
60+
if err != nil {
61+
fmt.Println("Error updating row: " + err.Error())
62+
return -1, err
63+
}
64+
return result.LastInsertId()
65+
}
66+
67+
// DeleteEmployee delete an employee from database
68+
func DeleteEmployee(db *sql.DB, name string) (int64, error) {
69+
tsql := fmt.Sprintf("DELETE FROM TestSchema.Employees WHERE Name='%s';", name)
70+
result, err := db.Exec(tsql)
71+
if err != nil {
72+
fmt.Println("Error deleting row: " + err.Error())
73+
return -1, err
74+
}
75+
return result.RowsAffected()
76+
}
77+
78+
func main() {
79+
// Connect to database
80+
connString := fmt.Sprintf("server=%s;user id=%s;password=%s;port=%d;database=%s;",
81+
server, user, password, port, database)
82+
conn, err := sql.Open("mssql", connString)
83+
if err != nil {
84+
log.Fatal("Open connection failed:", err.Error())
85+
}
86+
fmt.Printf("Connected!\n")
87+
defer conn.Close()
88+
89+
// Create employee
90+
createID, err := CreateEmployee(conn, "Jake", "United States")
91+
if err != nil {
92+
log.Fatal("CreateEmployee failed:", err.Error())
93+
}
94+
fmt.Printf("Inserted ID: %d successfully.\n", createID)
95+
96+
// Read employees
97+
count, err := ReadEmployees(conn)
98+
if err != nil {
99+
log.Fatal("ReadEmployees failed:", err.Error())
100+
}
101+
fmt.Printf("Read %d rows successfully.\n", count)
102+
103+
// Update from database
104+
updateID, err := UpdateEmployee(conn, "Jake", "Poland")
105+
if err != nil {
106+
log.Fatal("UpdateEmployee failed:", err.Error())
107+
}
108+
fmt.Printf("Updated row with ID: %d successfully.\n", updateID)
109+
110+
// Delete from database
111+
rows, err := DeleteEmployee(conn, "Jake")
112+
if err != nil {
113+
log.Fatal("DeleteEmployee failed:", err.Error())
114+
}
115+
fmt.Printf("Deleted %d rows successfully.\n", rows)
116+
}

0 commit comments

Comments
 (0)